我可以连接到客户端同一IP和端口上的多个资源吗?
我有以下代码 -
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);}
我正在myIP:myPort
上运行node-http-proxy。
它将A和B上的连接代理到它们各自的socket-io服务器。
如果我在一个脚本上运行上面的代码,浏览器会忽略第二个语句(它不会触发对资源B的请求)。
A和B的on(message)
回调都会收到实际属于A的相同数据。
如果我在两个不同的html页面上运行上面的代码(A在一个而B在另一个上),它们工作正常,我分别得到两个数据。
答案 0 :(得分:10)
试试这个:
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});
(是的,我删除了一些引号)
答案 1 :(得分:1)
我还要提到命名空间......很多时候你要做的就是按套接字处理重新连接事件,命名空间为你做这件事。他们的主要好处是你不需要每个人都有一个连接,这意味着他们不会为每个域的6个连接限制浏览器做出贡献。
要进行连接,只需执行以下操作:
socket = io('/namespace')