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

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

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

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

如果您打算开发一个复杂的聊天室,您必须考虑devise服务器端代码,并在服务器端维护客户端信息。 例如,您必须将新连接的客户端套接字映射到服务器端的variables,如果要引入“朋友”function,则必须在服务器端维护这些信息。 所以你的服务器不必查找每个客户端,看他们是否是正确的消息接收者。

在所有这些实现的情况下,在向公众发送消息的情况下,在服务器端,我们可以先find所有的“朋友”套接字,然后将突出显示为“朋友”的消息发送到这些套接字,然后发送正常的文本给其他人。 对于朋友的私人信息,因为我们只考虑朋友套接字,所以它会容易得多。

所以你仍然需要重用你在PHP中使用的一些devise模式,socket.io只能为你保持长时间的连接,这就是全部。