我创建了 2 个网站,它们使用 socketio+nodejs(+ 2 个开发网站)。现在,我需要将 2 个站点移动到一台服务器中。
为此,我使用了 express-vhost,它适用于一切……除了 socket.io。
在我的应用程序中,我使用了数百次以下功能。
socket.emit(), io.sockets.emit() , socket.broadcast.emit()
等等。当我创建网站时,我是第一次使用 socketio,并且正在学习它。因此,我从未使用过命名空间(仍然没有使用它们)。
现在,当我在 vhost 下运行两个站点时,有人连接到 site1,他们也连接到 site2,因为他们使用相同的 socket.io 实例。
所以,我尝试创建多个socketio实例,每个域一个,就像这样
http = server.listen(80);//my vhost main app
global.io_for_domain_1 = require('socket.io')(http, {'transports': ['websocket', 'polling']} );
global.io_for_domain_2 = require('socket.io')(http, {'transports': ['websocket', 'polling']} );
/*And then, in my domain app, i was hoping to simply swap out the reference for io like so
...in my global socket controller that passes io reference to all other controllers...*/
this.io = global.io_for_domain_1 ;
//hoping that this would help me to avoid not having to re-write the hundreds of references that use io.
这几乎似乎工作......但是,一旦我为socketio创建第二个实例(服务器),那些在之前创建的实例就会“断开连接”并停止工作。
我如何创建多个 socketio 服务器实例并让它们独立工作。或者,我还能如何解决这个问题......也许使用命名空间(我仍然不知道如何使用它们)。