socket.io 自动断开socket

问题描述 投票:0回答:3

当我在 Electron 中运行 socket.io 时,我不断在开发者控制台中收到此错误。

engine.io-client:socket probe transport "websocket" failed because of error: transport closed +6s

当我建立它时,套接字总是立即断开连接。我的客户端甚至在连接建立后一两分钟后才得到我所做的 socket.emit 。

客户端和服务器使用相同版本的socket.io。

服务器:

io.on('connection', function(socket){
  socket.emit('got it','');
  console.log('Socket connection established');
});

客户:

var socket = require('socket.io-client')('http://localhost:3000');
console.log(socket);
socket.on('got it', function(a){
  console.log('connected');
  console.log(socket);
})

这不是完整的代码,但除了一些不应该影响连接的其他侦听器之外,没有其他任何内容与 websocket 交互。

服务器没有显示任何问题。每次有人连接时它都会告诉我,但当我尝试以任何一种方式发出任何内容时,接收者都不会立即收到它。每次我单击发送发送的按钮时,我都会看到“发送带有 ack id x 的数据包”,但服务器看不到它。这个问题是间歇性的,好像我稍等一下服务器和客户端就能够连接,但在一段时间后它们仍然随机断开连接。

node.js ubuntu socket.io
3个回答
19
投票

我通过添加修复了这个问题

{transports: ['websocket'], upgrade: false}

作为实例化客户端时的选项。

来自https://stackoverflow.com/a/28240802/4726265的回答


0
投票

正确更改socket.io-client版本。

npm i socket.io-client@v2-latest --save

0
投票

android:使用CleartextTraffic =“true”

将其添加到应用程序标签中的 AndroidManifest.xml 中

示例:

<application
...
android:usesCleartextTraffic="true">
...
</application>
© www.soinside.com 2019 - 2024. All rights reserved.