5
在socket.io的博客說,在1.2.1版socket.io 1.2.1如何解決雙重事件後重新連接
「README修正,以防止在重新連接時的例子雙事件[@nkzawa ]「
我爲客戶端&服務器下載了1.2.1版本,但是在重新連接後它仍然調用兩次事件。 或者我應該使用自述文件做些什麼?
我試過這種方式重新連接,它的工作,但我可以用它來生產。它是不是很方便?
socket.disconnect()
// remove socket object
socket = undefined
// connect again
socket = io.connect({'forceNew':true})
正如我說的是正確的方式還是它有缺點?
UPDATE,增加的代碼
服務器端代碼
socket.on('client_emited', function(data){
socketIO.to('this socket id').emit('server_emitted');
})
客戶端代碼
var socket;
function connectSocket() {
if (!socket)
socket = io({'forceNew':true});
else
socket.connect();
}
socket.on('connect', function(){
console.log('CONNECTED TO SOCKET.IO SERVER. SENDING "client_emited" EVENT');
socket.emit('client_emited');
});
socket.on('server_emited', function(){
console.log('RECEIVED "server_emited" EVENT');
});
socket.connect(); // here console shows 'CONNECTED TO SOCK...' and 'RECEIVED "server_e...' 1 time
socket.disconnect();
socket.connect(); // here console shows 'CONNECTED TO SOCK...' 2 times and 'RECEIVED "server_e...' 4 times time
服務器接收 「client_emit」 事件兩次
的問題很可能在創建你的消息的事件處理程序的代碼。您需要確保您只是一次調用該代碼,或者在開始新代碼之前刪除事件處理程序。請告訴我們該代碼。 – jfriend00
謝謝你的迴應,會在一分鐘內顯示 – onar
先生,我正在修改代碼以使其理解,它將在2-3分鐘內完成。同時你能否寫下你對第二種方法的看法:首先解除連接,然後再移除socket對象。我可以使用它嗎? – onar