Sails套接字不会重新连接

Don*_*lie 2 javascript sockets communication sails.js

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

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};
Run Code Online (Sandbox Code Playgroud)

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

 io.sails.forceNew = true;
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我怎么能强迫他们重新连接?

Con*_*oad 6

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

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

解决方案:手动设置io.socket._raw.io._reconnectiontrue

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

io.socket.on('disconnect', function() {
    io.socket._raw.io._reconnection = true;
});
Run Code Online (Sandbox Code Playgroud)

这是相当丑陋,因为你必须访问底层socket.io带插座的客户._raw,得到了插座与管理.io,并设置另一个[伪]私有变量._reconnection,来true.

需要强调的是,整个"不重新审核"问题仅sails.io.js在节点中使用,而浏览器实现工作正常.

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