我有socket.io应用程序必须处理大量的命名空间。我想知道什么是socket.io实例可以处理的命名空间的数量的限制,如果我创建像10k命名空间,是否有任何问题。我如何进行扩展,以便像在多个socket.io实例中一样进行堆栈(例如,每个实例处理1k个namespance)。实际上,我可以扩展以支持多个用户,但是我的所有实例都必须处理所有的名称空间。Socket.io命名空间的限制和如何扩展它
UPDATE1:
我试图解决的问题是下面,我有一个多人卡片游戏(如扑克牌),每间客房,其中4名玩家在玩游戏时,被socketio命名空间建模。由于我期待成千上万的并发玩家,因此我的socketio实例应该处理这个数量的命名空间。 我已经实现了在Socket.io website中解释的可伸缩性解决方案。当我扩展时,这个节点片段在新实例中运行,因此它可以处理之前创建的所有命名空间。
rooms.forEach(function(room){
var socketRoom = io.of('/room/' + room.id)
.on('connection', function(mySocket){
return handleTableSocket(mySocket, socketRoom, room);
});
});
那么用socketio命名空间模拟每个游戏房间是个好主意吗?如果命名空间的数量增长了呢?
干杯
@ hamou92 - 你有没有任何理由将每个游戏都建模为一个“房间”而不是命名空间。我相信socket.io中的房间是一个比命名空间更轻的对象,我认为一个房间仍然会为您提供您想要的通信功能。 – jfriend00
我在做出选择之前做了一些研究。它似乎像名称空间给更多的分离http://stackoverflow.com/questions/10930286/socket-io-rooms-or-namespacing – hamou92
@ hamou92 - 这是否回答你的问题? – jfriend00