简单场景:
socket = io.connect(...)
客户端使用 socket.io ( )连接到服务器- 服务器崩溃
- 客户端尝试重新连接
- 用户告诉客户端断开连接 (
socket.disconnect()
) - 服务器启动
- 客户端重新连接
似乎一旦 socket.io 开始尝试重新连接,它就不能再停止了。我想要第 4 步来防止第 6 步发生,但事实并非如此。我必须打电话给什么?
简单场景:
socket = io.connect(...)
客户端使用 socket.io ( )连接到服务器socket.disconnect()
)似乎一旦 socket.io 开始尝试重新连接,它就不能再停止了。我想要第 4 步来防止第 6 步发生,但事实并非如此。我必须打电话给什么?
您可能想自己处理重新连接。
// Disables the automatic reconnection
var socket = io.connect('http://server.com', {
reconnection: false
});
// Reconnects on disconnection
socket.on('disconnect', function(){
socket.connect(callback);
});
注意:使用旧版本reconnect
而不是reconnection
.
我认为您需要配置 socket.io
client
的不是reconnect
将属性设置reconnect
为false
我创建了一个小服务器(server.js
)来测试这个:
var io = require('socket.io').listen(8888);
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
然后我创建了这个test.js
来测试它不会重新连接
var client = require('socket.io-client'),
socket = client.connect('http://localhost:8888', {
'reconnect': false
});
socket.on('connect', function () {
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
});
为了test.js
工作,您需要socket.io-client
从npm
发布npm install socket.io-client
或添加socket.io-client
(dev-)dependency
到您的package.json
.
当我在运行时停止server.js
时会立即返回,我相信这是您想要的结果。当我设置为客户端时,将尝试重新连接到服务器,这不是所需的行为test.js
test.js
reconnect
true
在新的 socket.io 1.1.x 中,您可以执行以下操作:
var manager = io.Manager('http://localhost:9823', { autoConnect: false });
这是博客链接。
试试下面的代码:
self.socket?.manager?.reconnects = false
不过,这对我来说效果很好,它会在完全停止之前再尝试一次。
socket.io-client": "2.2.0"
this.socket.io.reconnectionAttempts(0);
你可以打电话socket.disconnect()
,然后它会停止尝试重新连接。