2013-04-09 67 views
8

Tôi có thể kết nối với nhiều tài nguyên trên cùng một IP và cổng ở phía máy khách không?Nhiều kết nối socket.io trên cùng một trang

Tôi có sau số-

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

Tôi đang chạy node-http-proxy trên myIP:myPort. Đó là các kết nối proxy trên A và B đến các máy chủ socket-io tương ứng của chúng.

Nếu tôi chạy mã trên trên một tập lệnh, trình duyệt bỏ qua câu lệnh thứ hai (Nó không kích hoạt yêu cầu đến tài nguyên B).

Các on(message) callbacks cho cả A và B nhận được cùng một dữ liệu mà thực sự thuộc về A.

Nếu tôi chạy mã trên trong hai trang html khác nhau (A trên một và B trên khác), họ làm việc tốt và tôi lấy dữ liệu cho cả hai.

Trả lời

9

Hãy thử điều này:

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

(Vâng, tôi loại bỏ một số trong những dấu ngoặc kép)

+0

Có nó làm việc cho tôi! cảm ơn rất nhiều – arunkjn

+0

điều 'tài nguyên' làm gì? – RandallB

+0

@RandallB: bây giờ nó được gọi là 'đường dẫn'. Đó là đường dẫn mà bạn muốn phục vụ các tệp JS tĩnh của socket.io từ đó. Kiểm tra http://stackoverflow.com/questions/12824612/change-socket-io-static-file-serving-path – maxdec

0

Tôi cũng xin đề cập đến tên miền không gian ... rất nhiều lần những gì bạn đang cố gắng làm là xử lý kết nối lại các sự kiện trên cơ sở mỗi socket, các không gian tên làm điều này cho bạn. Ưu điểm chính của họ là bạn không cần phải có một kết nối cho mỗi một, có nghĩa là họ không đóng góp vào giới hạn 6-kết nối mỗi tên miền của các trình duyệt.

Để kết nối, bạn chỉ cần làm điều này:

socket = io('/namespace')

Các vấn đề liên quan