【问题标题】:Node.js - Handling hundreds of user preferencesNode.js - 处理数百个用户偏好
【发布时间】:2015-05-16 09:30:53
【问题描述】:

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

在 node.js 中,尤其是在像聊天室这样长时间运行的进程中(我使用的是 socket.io),一个进程将处理成百上千的用户。例如,假设我有一个有 200 人的聊天室,如果消息来自用户认为是“朋友”的参与者,我希望突出显示消息,那么我将不得不遍历 200 个用户来查看用户是否是朋友或不(特别是如果聊天只发送给朋友而不是公开)。

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

【问题讨论】:

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


    【解决方案1】:

    如果您要开发一个复杂的聊天室,您必须考虑设计服务器端代码并​​在服务器端维护客户信息。例如,您必须将新连接的客户端套接字映射到服务器端的变量,如果您想引入“朋友”功能,您必须在服务器端维护这些信息。因此,您的服务器不必查找每个客户端,看看它们是否是正确的消息接收者。

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

    所以你仍然需要重用你在 PHP 中使用的一些设计模式,socket.io 只会为你维护长连接,仅此而已。

    【讨论】:

      猜你喜欢
      • 2011-04-11
      • 2019-01-22
      • 1970-01-01
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      相关资源
      最近更新 更多