我应该如何管理一个node.js应用程序的套接字的数量?



我正在构建我的第一个基于web的node.js应用程序-一个在线游戏-作为一个爱好/项目,试图教自己如何工作。

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

每当游戏更新时,我都会向每个用户发送一个对象,它会立即更新所有内容,而且很多时候,被更新的信息实际上是保持不变的。例如,如果一名用户得了一分,就会向每个人的浏览器发送更新信息,更新排行榜,但同样的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
}
}

(实际对象比这个大得多)

对于需要更新的每一个单独的信息有一个不同的socket.on函数会更明智吗?这样我就可以在需要的时候单独调用它们,或者通过一个函数更新所有的东西有什么意义吗?如有任何意见,不胜感激。

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

使用不同的套接字会更明智吗?对于需要更新的每个单独的信息,我可以在需要的时候单独调用它们

是的。为你经常发送的东西设计有效的消息。

或者通过一个函数更新所有内容有任何意义吗?

只有当你需要一次改变很多东西的时候。将数据包含在从不更改且不需要发送的频繁消息中是浪费的。


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

并且,即使在两个消息中都有一些数据,您也可以为不同的目的使用不同的消息。


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

相关内容

最新更新