11

我可以在客户端连接到同一 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);}

我正在运行node -http-proxymyIP:myPort它将 A 和 B 上的连接代理到它们各自的 socket-io 服务器。

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

A 和 B的on(message)回调接收到实际属于 A 的相同数据。

如果我在两个不同的 html 页面中运行上面的代码(一个是 A,另一个是 B),它们可以正常工作,我会分别获取这两个页面的数据。

4

2 回答 2

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

(是的,我删除了一些引号)

于 2013-04-09T12:30:17.207 回答
1

我还要提到命名空间......很多时候你想要做的是在每个套接字的基础上处理重新连接事件,命名空间为你做这件事。它们的主要优点是您不需要每个连接都有一个连接,这意味着它们不会影响浏览器的每个域 6 个连接的限制。

要连接,只需执行以下操作:

socket = io('/namespace')

于 2016-05-02T13:22:35.613 回答