Node.js - 处理数百个用户首选项

时间:2015-03-13 19:04:10

标签: node.js socket.io multi-user socket.io-1.0

我正在学习node.js(我的网站背景主要是PHP),到目前为止我很喜欢它,但我有以下问题。在PHP和其他类似语言中,每个请求都是脚本的单个执行执行。可以加载所有用户首选项等,并且不会出现任何问题,因为一旦脚本执行完成,所有资源都将被释放。

在node.js中,特别是在像聊天室这样的长时间运行的过程中(我使用socket.io),一个进程将处理数百/数千个用户。假设我有一个有200人的聊天室,并且我想要突出显示消息,如果它来自用户认为是“朋友”的参与者,那么我将需要循环通过200个用户以查看是否用户是不是朋友(特别是如果聊天只发送给朋友而不是公开)。

这真的很慢,特别是随着时间的推移?有没有我错过的东西?在我的小测试中,随着用户数量和消息数量的增加,服务器的响应能力明显下降。

1 个答案:

答案 0 :(得分:2)

如果要开发复杂的聊天室,则必须考虑设计服务器端代码并​​在服务器端维护客户端信息。例如,如果要引入" Friend"您必须在服务器端维护这些信息。因此,您的服务器不必查找每个客户端,看他们是否是正确的消息接收者。

通过所有这些实现,在向公众发送消息的场景中,在服务器端,我们可以首先找到所有"朋友"套接字,然后发送突出显示为"朋友"到那些套接字,然后将普通文本发送给其他人。对于给朋友的私人消息,因为我们只考虑朋友套接字会更容易。

所以你仍然需要重用你在PHP中使用的一些设计模式,socket.io只会为你保持长连接,就是这样。