簡體   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