javascript - Sails 套接字不会重新连接

标签 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;

但它不起作用。我怎样才能强制他们重新连接?

最佳答案

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

问题:我的 SailsS​​ocket 实例在使用 sails.io.js 节点模块时没有尝试重新连接

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

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

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

它相当难看,因为你必须使用._raw 访问底层的socket.io 套接字客户端,使用.io 获取套接字的管理器>,并将另一个 [伪] 私有(private)变量 ._reconnection 设置为 true

应该强调的是,整个“未重新连接”问题仅在节点中使用 sails.io.js 时出现,而浏览器实现工作正常。

测试于: sails 0.11.0sails.io.js 节点 SDK 1.1.12, 节点 6.11.2

关于javascript - Sails 套接字不会重新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41400510/

相关文章:

perl - 如何在 perl 中制作多线程服务器?

javascript - 更改 sails.js 中的配置文件夹结构

javascript - Sails.js 在使用 MongoDB 时不应用模型方案

java - SocketServer.Accept() 影响?

c++ - 避免拒绝服务攻击

javascript - SailsJS,Socket IO 101(切换协议(protocol))永远悬而未决

javascript - 多个 div 的 jQuery 范围 slider 值框

javascript - 在哪里安全地存储用于来自 Monzo 银行 api 的 api 请求的访问 token

javascript - 无法在nodejs中为URL.createObjectURL添加polyfill

javascript - Node.js 服务器延迟