2013-04-09 26 views
8

Kann ich auf der Clientseite eine Verbindung mit mehreren Ressourcen auf derselben IP-Adresse und demselben Port herstellen?Mehrere socket.io-Verbindungen auf derselben Seite

Ich habe folgendes 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);} 

ich node-http-proxy auf myIP:myPort leite. Es Proxy-Verbindungen auf A und B zu ihren jeweiligen Socket-IO-Servern.

Wenn ich den obigen Code für ein einzelnes Skript ausführen, ignoriert der Browser die zweite Anweisung (Es wird keine Anfrage an Ressource B ausgelöst).

Die on(message) Rückrufe sowohl für A und B die gleichen Daten empfangen, die zu A. gehört eigentlich

Wenn ich den obigen Code in zwei verschiedenen HTML-Seiten (A auf der einen und B auf anderen) laufen, sie funktionieren gut und ich bekomme die Daten für beide getrennt.

Antwort

9

Try this:

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}); 

(Ja, ich einige der Zitate entfernt)

+0

Ja, es funktioniert für mich! Vielen Dank – arunkjn

+0

Was macht die Ressource? – RandallB

+0

@RandallB: Es heißt jetzt 'Pfad'. Es ist der Pfad, aus dem Sie die statischen JS-Dateien von socket.io bedienen möchten. Überprüfen Sie http://stackoverflow.com/questions/12824612/change-socket-io-static-file-serving-path – maxdec

0

ich auch erwähnen würde ... Namespaces, eine Menge Zeit, was Sie zu tun versuchen ist Griff wieder Ereignisse auf einer Socket-Basis, Namespaces tun dies für Sie. Ihr Hauptvorteil besteht darin, dass Sie nicht pro Verbindung eine Verbindung herstellen müssen, was bedeutet, dass sie nicht zur Beschränkung von 6 Verbindungen pro Domäne von Browsern beitragen.

zu verbinden, einfach dies tun:

socket = io('/namespace')

Verwandte Themen