当前位置:  开发笔记 > 编程语言 > 正文

如何扩展socket.io?

如何解决《如何扩展socket.io?》经验,为你挑选了1个好方法。

假设服务器获得10,000个并发连接(通过socket.io).这是很多,如果它不能再处理,我需要启动另一台服务器.

如何将这两个服务器与socket.io同步?



1> 3rdEden..:

我不会使用Cluster来扩展Socket.IO.Socket.IO 0.6设计为单个进程服务器,它使用长生存连接或轮询连接来实现服务器和客户端之间的实时连接.

如果您将套接字放在socket.io客户端的基础上,则基本上将在不知道客户端的不同服务器之间分发轮询传输.这将导致连接断开.但是,向所有客户广播也会很麻烦,因为它们都分布在不同的服务器上,而且它们之间没有IPC.

因此,如果您只使用Web Socket和Flash Socket连接并且不需要使用广播功能,我只会建议使用Cluster.

那你该怎么办?

你可以等到socket.io 0.7发布,它是从头开始设计的,用于多个进程.

或者您可以使用pub/sub在不同服务器之间发送消息.


@UpTheCreek你可以使用我们在Socket.IO中发布的RedisStore https://github.com/LearnBoost/socket.io/blob/master/lib/stores/redis.js这至少可以让你扩展到多个进程使用Node.js的集群功能构建
是的,RedisStore.默认情况下,Socket.IO将在进程的内存中握手和连接ID +套接字数据,但是当您更改到redis存储时,此数据将在所有进程中可用,因为它存储在一个单独的位置+ sessionids是复制的整个进程.因此,即使他们在不同的流程上握手,他们也可以接受每一次投票.无论如何,完成的商店昨天降落在github大师,所以你可以在下一个版本中玩它:)
@ 3rdEden有机会更新你的答案吗?从那以后看起来很多变化......谢谢!
推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有