2013-04-09 2 views
8

Posso connettermi a più risorse sullo stesso IP e porta sul lato client?Più connessioni socket.io sulla stessa pagina

Ho il seguente code-

var myIP = "192.168.1.1"; 
var myPort = "8080"; 

A = io.connect(myIP+':'+myPort,{resource: 'A/socket.io'}); 
B = io.connect(myIP+':'+myPort,{resource: 'B/socket.io'}); 

A.on('connect',console.log('A connected'); 
B.on('connect',console.log('B connected'); 

A.on('message',function(d){console.log('A: '+ d);} 
B.on('message',function(d){console.log('B: '+ d);} 

Sono in esecuzione su node-http-proxymyIP:myPort. Sta collegando le connessioni su A e B ai rispettivi server socket-io.

Se eseguo il codice sopra riportato su un singolo script, il browser ignora la seconda istruzione (non attiva una richiesta alla risorsa B).

I on(message) callback per entrambi A e B ricevilo gli stessi dati che appartiene effettivamente A.

Se corro il codice precedente in due pagine html differenti (A sull'uno e sull'altro B), funzionano bene e ottengo i dati per entrambi separatamente.

risposta

9

Prova questo:

A = io.connect(myIP+':'+myPort, {resource: 'A/socket.io', 'force new connection': true}); 
B = io.connect(myIP+':'+myPort, {resource: 'B/socket.io', 'force new connection': true}); 

(Sì, ho rimosso alcune delle citazioni)

+0

Sì funziona per me! grazie mille – arunkjn

+0

cosa fa la cosa 'risorsa'? – RandallB

+0

@RandallB: ora è chiamato 'percorso'. È il percorso da cui si desidera fornire i file JS statici di socket.io. Controlla http://stackoverflow.com/questions/12824612/change-socket-io-static-file-serving-path – maxdec

0

Vorrei anche citare namespace ... un sacco di volte quello che stai cercando di fare è maniglia ricollegare eventi su base socket, i namespace fanno questo per te. Il loro principale vantaggio è che non è necessario avere una connessione per ciascuno, il che significa che non contribuiscono al limite di browser di 6 connessioni per dominio.

Per connettersi, fare semplicemente questo:

socket = io('/namespace')