我正在調查nodejs/socket.io進行實時聊天,我需要一些實現聊天室的建議。socket.io房間或命名空間?
哪個更好,使用命名空間或使用房間功能來完全隔離聊天者的對話?
房間和命名空間的真正技術區別是什麼?
是否有任何資源使用差異?
我正在調查nodejs/socket.io進行實時聊天,我需要一些實現聊天室的建議。socket.io房間或命名空間?
哪個更好,使用命名空間或使用房間功能來完全隔離聊天者的對話?
房間和命名空間的真正技術區別是什麼?
是否有任何資源使用差異?
這是命名空間和客房都共同(socket.io v0.9.8 - 請注意涉及一個完全重寫的是1.0版,這樣的事情可能會改變):
的差異:
io.connect(urlAndNsp)
客戶連接(客戶端將被添加到該命名空間,只有當它已經存在於服務器)爲了不混淆的名稱(室或命名空間)的概念,我將使用車廂提及的概念,而其他兩個名稱實現這一概念的。所以,如果你
後者的一個例子是,在不同的模塊,也許單獨開發(例如第三方)一個大的客戶端應用程序,各自獨立地使用socket.io在相同的應用程序正在使用,並希望共享一個單一網絡連接。
實際上沒有對此進行基準測試,在我看來,如果您只需在項目中使用簡單的隔離區來分隔和分組消息,則任何一個都可以。
不知道這是否會回答你的問題,但引導這個答案的研究至少幫助我看清了。
這取決於你想要做什麼。
主要區別在於房間難以實施。 您必須爲每個頁面重新加載時創建一個加入房間的方法。
隨着命名空間,你只需要在你的JavaScript客戶端和客戶端在命名空間自動添加到寫var example = io.connect('http://localhost/example');
。利用
例子:
這是一個古老的問題,但經過對這個話題的一些研究後,我發現接受的答案在重要的一點上並不清楚。根據Guillermo Rauch本人(see link): 雖然理論上可以在運行的應用程序上動態地創建名稱空間,但您主要將它們用作應用程序的預定義單獨部分。另一方面,如果您需要即時創建專用隔間以適應用戶羣/連接羣,則最好使用房間。
在socket.io版本> = 1.0之後,有沒有什麼重大變化? – Xeroxoid
最後一個版本的變化,閱讀http://socket.io/docs/rooms-and-namespaces/和這個答案可以有助於瞭解房間的東西 http://stackoverflow.com/questions/24041220/sending-message -to-a-specific-id-in-socket-io-1-0/24224146#24224146 –
我們可以說名稱空間是我的web應用程序的某個區域,並且是該區域中的一組客戶端? – Onaiggac