socket.io房間是一個輕量級的數據結構。它們只是與該房間相關的一組連接。您可以擁有任意數量的內存(在正常內存使用限制內)。沒有重量級的東西讓資源方面的房間變得昂貴。這只是希望與該房間關聯的套接字列表。發射到房間無非是通過房間中的套接字陣列迭代併發送給每個房間。
一個房間只需要一點點內存來保存每個房間的套接字陣列。除此之外,沒有額外的成本。此外,如果您的替代方案是爲每個主題維護一個套接字數組,那麼您的替代方案可能不會爲您節省太多或其他任何東西。
我的問題:是否可以爲每個主題創建一個空間+消息 類型的組合,這將是5 x 100個房間?
是的,這很容易實現。
請問socket.io的性能如何,還是有更好的辦法來解決這個問題呢 ?
有這麼多房間沒有問題。它的表現是否良好完全取決於你在這麼多房間裏做什麼。如果你正在向很多房間發送大量消息,而每個房間都有很多套接字,那麼如果出現性能問題,你必須進行基準測試。
將單個消息發送到每個單獨的套接字,而不是 使用房間,會更好?
不會有明顯的差異。房間只是一個便利的工具。發射到一個房間,只需要遍歷房間中的每個插座併發送給它 - 就像你提議的那樣。也可以使用內置的房間功能,而不是重新實現自己。
@Baronz - 這個問題並不完全一樣。這個問題是關於您可以在服務器上維護多少個房間,而不是關於您連接了多少個套接字。 – jfriend00