Sails套接字不会重新连接

时间:2016-12-30 17:54:12

标签: javascript sockets sails.js communication

我有两个后端通过套接字相互通信。在发送一个我只爆炸。在收到一个

const socketIOClient = require('socket.io-client');
const sailsIOClient = require('sails.io.js');
const io = sailsIOClient(socketIOClient);
io.sails.url = "http://route.to.my.backend";
io.sails.initialConnectionHeaders = {secret: process.env.SOCKETSECRET};

当套接字连接中断时,套接字将不会重新连接。我尝试过:

 io.sails.forceNew = true;

但它不起作用。我如何强迫他们重新连接?

1 个答案:

答案 0 :(得分:6)

这是一个老问题,但由于我的解决方案似乎没有记录(并且没有提供其他答案),我发布以供将来参考。

问题:我的SailsSocket实例在使用sails.io.js节点模块时未尝试重新连接

解决方案:手动将io.socket._raw.io._reconnection设置为true

具体来说,当您的套接字断开连接时,将上述属性设置为true,套接字将自动尝试重新连接。

io.socket.on('disconnect', function() {
    io.socket._raw.io._reconnection = true;
});

它相当丑陋,因为您必须使用socket.io访问基础._raw套接字客户端,使用.io获取套接字管理器,并设置另一个[伪]私有变量._reconnectiontrue

应该强调的是,整个"没有重新接受"问题仅在节点中使用sails.io.js时出现,而浏览器实现正常。

测试: sails 0.11.0sails.io.js node SDK 1.1.12node 6.11.2