简单方案:
socket = io.connect(...)
)socket.disconnect()
)似乎一旦socket.io开始尝试重新连接,它就不能再停止了。我希望第4步阻止第6步发生,但事实并非如此。我该怎么称呼呢?
答案 0 :(得分:25)
您可能想要自己处理重新连接。
// 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
。
答案 1 :(得分:2)
我认为您需要的是configure 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
设置为{{1}}时,客户端将尝试重新连接到服务器,这不是所需的行为
答案 2 :(得分:0)
在新的socket.io 1.1.x中,您可以执行以下操作:
var manager = io.Manager('http://localhost:9823', { autoConnect: false });
这是blog link。
答案 3 :(得分:0)
尝试以下代码:
self.socket?.manager?.reconnects = false
答案 4 :(得分:0)
尽管这对我很有用,但在完全停止之前又进行了一次尝试。
socket.io-client”:“ 2.2.0”
this.socket.io.reconnectionAttempts(0);
答案 5 :(得分:-1)
您只需拨打socket.disconnect()
,它就会停止尝试重新连接。