socket.io 客户端可以连接到两个不同的服务器/端口吗?

Posted

技术标签:

【中文标题】socket.io 客户端可以连接到两个不同的服务器/端口吗?【英文标题】:Can socket.io client connect to two different servers/ports? 【发布时间】:2011-10-14 04:31:26 【问题描述】:

socket.io 客户端可以连接到同一服务器上的两个不同端口吗?

socket.io 客户端可以连接到两个不同的服务器吗?

【问题讨论】:

【参考方案1】:

socket.io 客户端能否同时连接到两个不同的端口 服务器?

我假设两台机器共享同一个域。我相信它可以使用长轮询(websockets、flashsockets 等也可以),甚至可以传递 cookie。但我仍然需要在 Internet Explorer 上对此进行测试,因为该浏览器永远不会执行我想要的操作...

socket.io 客户端可以连接到两个不同的服务器吗?

最大的问题是这两台机器是否位于不同的域中。如果在同一个域上,即使传递 cookie,它也能正常工作。如果它们在不同的域上,那么在某些浏览器上我们会回退到 json-p 传输(可以想象的最差传输),但它会起作用。不幸的是,由于同源策略,cookie 没有被传递。现在我正在尝试绕过这个 cookie 限制(难题)...

【讨论】:

【参考方案2】:

当然:

var io1 = require('socket.io').listen(8001);

io1.sockets.on('connection', function (socket) 
  socket.emit('news',  hello: 'world' );
);


var io2 = require('socket.io').listen(8002);

io2.sockets.on('connection', function (socket) 
  socket.emit('flash',  hello: 'world' );
);

也许这是一个有趣的阅读:(来自github

// connect at the same host / port as your website
var socket = io.connect();

// different port or host
var socket = io.connect('http://url.com');

// secure
var socket = io.connect('https://localhost');

【讨论】:

以上是关于socket.io 客户端可以连接到两个不同的服务器/端口吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Socket.io 将客户端连接到服务器

如何从不同的主机连接到 socket.io 服务器?

Socket.io - nodejs 服务器端。重新连接后传输关闭

Socket.io 客户端在突然断开连接后无法重新连接到服务器

Socket.IO-Client-Swift 未连接到 nodejs socket.io 服务器

将 Socket.io 浏览器客户端连接到本地 Node.js 网络服务器