0
votes

I have a problem with socket.io/node.js. My Client cannot receive Messages from Server after switch Server with "forceNew true"

My Script on Client-side looks like this:

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>

My Client connect to "server1.domain.com" and can send Messages to "server1.domain.com" via "socket.emit". Client can receive Messages from Server1. It runs perfect. No problems.

Problem: When my Client connect to "server2.domain.com" he can emit Messages to Server2, but Server2 can not emit Messages to Client. Client dont receive any Messages from Server2.

Does anyone know a solution?

on client-side i use "socket.io-1.4.5.js", on server-side nodejs v4.2.6 + Option "io.origins(':');"

1

1 Answers

0
votes

This Solution works. "socket.on"-Listener must be renew inside 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);
 });

}