2016-12-30 2 views
1

내가 가지고 다시 연결하지 않습니다. 보내는 사람에게 나는 폭발 만합니다. 수신중인 경우 소켓 연결이 끊어지면 소켓 연결이 끊어 질 때항해 소켓은 소켓을 통해 서로 통신 백엔드에

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; 

그러나 작동하지 않는다. 어떻게 내가 그들을 다시 강제로 할 수 있습니까?

답변

2

이것은 이전 질문이지만 문서화되지 않은 것으로 보이는 해결책이 있으므로 (다른 답변도 제공되지 않음) 나중에 참조 할 수 있도록 게시하고 있습니다.

는 문제 :

솔루션을 sails.io.js 노드 모듈을 사용하는 동안 내 SailsSocket 인스턴스가 재 연결을 시도하지 않습니다 : 당신의 소켓 연결 해제는, true과에 위의 속성을 설정할 때 수동으로, 특히 true

io.socket._raw.io._reconnection 설정 소켓이 자동으로 재 연결을 시도합니다. 당신이 true에, ._raw로 기본 socket.io 소켓 클라이언트에 액세스 .io와 소켓의 매니저를 얻고, 또 다른 [사이비] 개인 변수, ._reconnection을 설정해야하기 때문에

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

그것은 오히려 추한입니다.

"재구성되지 않는"문제는 노드에서 sails.io.js을 사용하는 경우에만 발생하며 브라우저 구현은 정상적으로 작동합니다. 나는 비 연결 문제를 제거하기 위해 관리하는 @ContinuousLoad 솔루션을 사용하여, sails 0.11.0 sails.io.js node SDK 1.1.12, node 6.11.2

1

을 :

는에서 테스트.

io.socket._raw.io._reconnectionAttempts = Infinity;

영원히 다시 연결을 시도 할 수있는 그런 식 : 나는 또한 다른 변수를 설정합니다.

그러나 그런 식으로 작동하는 이유를 모르겠어요. https://github.com/socketio/socket.io-client/blob/master/docs/API.md#new-managerurl-options

우리가 정말 "reconnectionAttempts"와 "재 연결"을 변경해야 할 것 같습니다 : 나는 sails.io.js 코드, https://github.com/balderdashy/sails.io.js/blob/master/dist/sails.io.js 및 소켓 io.client, 관리자의 특히 부분을 공부했습니다 sails.io.js 코드에 명시된 바와 같이 소켓이 연결되어 있지 않을 때 변경해야합니다.

// 소켓을 분리 할 때만 변경할 수 있도록 연결 옵션을 설정합니다. VAR의 _opts = {};

하지만 실제로 개인 개체 속성을 만들어야하는 이유는 모르겠습니다. 그래도 "_"부분없이 테스트를하지 않습니다. 분명히이이 문제에 대한 답을 가지고 인터넷의 유일한 부분입니다, 그래서 당신은, @ContinuousLoad 그것을 알아 냈 기뻐요! 고마워요!

+0

조사 해 주셔서 감사합니다. 나는 여기에서 움직임을 보게되어 기쁘다. 기회가 생기면이 문제를 [balderdashy/sails.io.js] (https://github.com/balderdashy/sails.io.js?files=1)에 가져올 것입니다. – ContinuousLoad