在同一个页面上的多个socket.io连接(Multiple socket.io connectio

2019-08-20 22:17发布

我可以连接到多个资源在同一个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);}

我运行节点的HTTP代理上myIP:myPort 。 据进行代理上A和B各自的插座-io的服务器的连接。

如果我在一个脚本运行上面的代码时,浏览器会忽略第二个语句(它不触发对资源B的请求)。

on(message)回调A和B两者收到这实际上属于A.相同的数据

如果我运行在两个不同的html页面(关于另一个和B A)上面的代码,他们的工作很好,我分别得到的数据两者。

Answer 1:

试试这个:

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

(是的,我删除了一些报价)



Answer 2:

我还要提到的命名空间......很多时候,你正在试图做的是处理重新在每个插槽的基础事件,命名空间为你做这个。 他们的主要好处是,你不必让每个各一个,这意味着它们无助于浏览器的6 - 连接 - 每个域限制的连接。

要连接,只要做到这一点:

socket = io('/namespace')



文章来源: Multiple socket.io connections on the same page