2016-11-22 9 views
0

socket.io/node.jsに問題があります。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」に接続して送信することができます:私のクライアントは、クライアント側の「真forceNew」

私のスクリプトを使用したスイッチServerは次のようになります後、サーバーからメッセージを受信できません"socket.emit"を介して "server1.domain.com"へのメッセージ。クライアントはServer1からメッセージを受信できます。完璧に走る問題はありません。

問題:クライアントが "server2.domain.com"に接続すると、Server2にメッセージを送信できますが、Server2はクライアントにメッセージを送信できません。クライアントはServer2からのメッセージを受信しません。

解決策を知っている人はいますか?

私はクライアント側で "socket.io-1.4.5.js"をサーバーサイドnodejs v4.2.6 +オプション "io.origins( '');

答えて

0

このソリューションは機能します。 "socket.on" - 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); 
}); 

} 
関連する問題