Socket.io - 客户端在切换服务器之后无法从服务器接收消息" forceNew true"

时间:2016-11-22 16:55:52

标签: node.js socket.io

我有socket.io/node.js的问题。在使用" 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>

我的客户端连接到&#34; server1.domain.com&#34;并可以发送消息给&#34; server1.domain.com&#34;通过&#34; socket.emit&#34;。客户端可以从Server1接收消息。它运行完美。没问题。

问题:当我的客户端连接到&#34; server2.domain.com&#34;他可以向Server2发送消息,但Server2无法向客户端发送消息。客户端不接收来自Server2的任何消息。

有人知道解决方案吗?

客户端的

我在服务器端nodejs v4.2.6 + Option&#34; io.origins(&#39; &#39;);&#34;

1 个答案:

答案 0 :(得分: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);
 });

}