我有两个后端通过套接字相互通信。在发送一个我只爆炸。在接收一个
const socketIOClient = require(‘socket.io-client’);const sailsIOClient = …
这是一个老问题,但由于我有一个似乎没有记录的解决方案(并没有提供其他答案),我发布以供将来参考。
SailsSocket
sails.io.js
io.socket._raw.io._reconnection
true
具体来说,当您的套接字断开连接时,请将以上属性设置为 true 并且套接字将自动尝试重新连接。
io.socket.on('disconnect', function() { io.socket._raw.io._reconnection = true; });
它相当难看,因为你必须访问底层 socket.io socket客户端 ._raw ,获取套接字管理器 .io ,并设置另一个[伪 - ]私有变量, ._reconnection , 至 true 。
socket.io
._raw
.io
._reconnection
应该强调的是,这整个“不重新审视”的问题只是存在使用 sails.io.js 在节点中,而浏览器实现工作正常。
测试: sails 0.11.0 , sails.io.js node SDK 1.1.12 , node 6.11.2
sails 0.11.0
sails.io.js node SDK 1.1.12
node 6.11.2
使用@ContinuousLoad解决方案,我设法摆脱了非连接问题。我还设置了另一个变量:
io.socket._raw.io._reconnectionAttempts = Infinity;
这样我就可以尝试永远重新连接。
但我不知道它为什么会这样。我一直在研究sails.io.js代码, https://github.com/balderdashy/sails.io.js/blob/master/dist/sails.io.js 和socket-io.client,特别是经理的一部分: https://github.com/socketio/socket.io-client/blob/master/docs/API.md#new-managerurl-options
看来我们确实需要更改“reconnectionAttempts”和“reconnection”属性,并且必须在未连接套接字时更改它们,如sails.io.js代码中所述:
//设置连接选项,以便只能在断开套接字时更改它们。 var _opts = {};
但我真的不知道为什么我们必须创建私有对象属性。但是,如果没有“_”部分,则不进行测试。显然,这是互联网唯一可以解决这个问题的部分,所以我很高兴你明白了,@连续加载!非常感谢!