2016-11-22 136 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); 
}); 

} 
相关问题