繁体   English   中英

我应该如何管理 node.js 应用程序中 sockets 的数量?

[英]How should I manage the number of sockets in a node.js application?

我正在构建我的第一个基于 Web 的 node.js 应用程序 - 一个在线游戏 - 作为一种爱好/项目,以尝试自学它是如何工作的。

我正在使用 socket.io 向用户发送实时更新(谁在大厅,得分等),但我不确定我管理 sockets 的方式,以及通过他们发送的信息,在最好的办法。

每当游戏更新时,我都会向每个用户发送 object,它会同时更新所有内容,而且很多时候,更新的信息实际上保持不变。 例如,如果用户得分,则会向每个人的浏览器发送更新以更新排行榜,但 function 上的相同socket.on正在重新发送用户名等信息,这些信息在整个游戏中保持不变:

exampleObject = {
  "usernames" : [username1, username2], // only gets updated in the browser once, but is sent every time
  "points": { 
    "username1": 1, // Different value with every update
    "username2": 3
  }
}

(真正的object比这个大不少)

对于需要更新的每条信息,在 function 上使用不同的socket.on会更明智,因此我可以在需要时单独调用它们,或者通过一个 function 更新所有内容是否有任何意义? 任何想法/建议将不胜感激。

如果您经常一遍又一遍地发送一条信息,那么设计一条仅包含该特定信息的特定消息是有意义的,这样您就不会定期发送不需要发送的信息。 您可以拥有任意数量的不同消息,您应该使用它来设计有效的消息,特别是对于最常见的消息。

对于需要更新的每条信息,在 function 上使用不同的 socket 会更明智,因此我可以在需要时单独调用它们

是的。 专门为您经常发送的内容设计有效的消息。

还是通过一个 function 更新所有内容有什么意义?

仅当您需要一次更改很多东西时。 将数据包含在永远不会更改且不需要发送的频繁消息中是一种浪费。


为不同的目的发送不同的消息是完全可以的,然后客户端对这些特定消息有不同的侦听器。 同时,如果您定期将三段数据一起发送,您可能不会为每段数据制作单独的消息 - 您会将这三段放在一起,以便您的消息结构与您的使用保持一致。

而且,即使某些数据在两条消息中,您也可以针对不同的目的使用不同的消息。


这里还有一个注意事项。 您问题的标题“我应该如何管理 node.js 应用程序中 sockets 的数量?” 似乎询问管理 sockets 的数量。 但是,您的问题的 rest 根本与此无关。 您问题的 rest 是关于在同一个套接字上有不同的消息。 您不需要新的套接字来定义和使用不同的消息。 您可以在同一个套接字连接上使用数以千计的不同消息。 这就是socket.io的整个架构。 您发送一个消息名称和一些与之相关的数据。 您可以在同一连接上使用无限数量的单独消息名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM