当我在 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 的数据包”,但服务器看不到它。这个问题是间歇性的,好像我稍等一下服务器和客户端就能够连接,但在一段时间后它们仍然随机断开连接。
我通过添加修复了这个问题
{transports: ['websocket'], upgrade: false}
作为实例化客户端时的选项。
正确更改socket.io-client版本。
npm i socket.io-client@v2-latest --save
android:使用CleartextTraffic =“true”
将其添加到应用程序标签中的 AndroidManifest.xml 中
示例:
<application
...
android:usesCleartextTraffic="true">
...
</application>