2016-11-22 77 views
0

我有一個socket.io/node.js問題。與「forceNew真正的」Socket.io - 切換服務器後,客戶端無法接收到來自服務器的消息,其中「forceNew true」

我的腳本在客戶端服務器切換後我的客戶端無法接收來自服務器的消息是這樣的:

var socket; 
function connect_server(host){ 
socket = new io.connect('//'+host+':843', { 
'forceNew': true, 
'transports': ['websocket'] 
}); 
} 
connect_server('server1.domain.com'); // First time connect Server1 

function disconnect(){ 
socket.emit('forceDisconnect'); 
} 

socket.on('messages', function (data) { 
console.log('Message from Server: '+data); 
}); 

<div onclick="disconnect(); connect_server('server2.domain.com');">Connect to Server2</div> 
<div onclick="socket.emit('emit_server', 'Test'); ">Send Message</div> 

我的客戶連接到「server1.domain.com」,並可以發送通過「socket.emit」發送到「server1.domain.com」的消息。客戶端可以接收來自Server1的消息。它運行完美。沒問題。

問題:當我的客戶端連接到「server2.domain.com」時,他可以發送消息到服務器2,但服務器2不能發送消息到客戶端。客戶端不接收來自Server2的任何消息。

有誰知道解決方案嗎?

在客戶端我使用「socket.io-1.4.5.js」,在服務器端nodejs v4.2.6 +選項「io.origins('');」

回答

0

此解決方案的工作原理。 「socket.on」-Listener必須在connect_server-function內更新。

function connect_server(host){ 

socket = new io.connect('//'+host+':843', { 
'forceNew': true, 
'transports': ['websocket'] 
}); 

socket.on('messages', function (data) { 
console.log('Message from Server: '+data); 
}); 

} 
相關問題