假設我有一組不同的房間(「足球」,「籃球」,「網球」......)和一組房間在使用Socket.IO的Node.js應用程序中,城市(「巴黎」,「倫敦」,「柏林」...)的編號爲僅將事件發送給與Socket.io房間組合的客戶
是否有可能只向那些對倫敦感興趣的人發送和活動? 類似於:
io.sockets.in('london').in('football').emit('event_name', data);
還是設計不好?
在此先感謝。
假設我有一組不同的房間(「足球」,「籃球」,「網球」......)和一組房間在使用Socket.IO的Node.js應用程序中,城市(「巴黎」,「倫敦」,「柏林」...)的編號爲僅將事件發送給與Socket.io房間組合的客戶
是否有可能只向那些對倫敦感興趣的人發送和活動? 類似於:
io.sockets.in('london').in('football').emit('event_name', data);
還是設計不好?
在此先感謝。
您可以在許多方面
你可以有房解決這個問題,你想,如果你的應用程序使用的路線像/london
還是要聽發出的
io.sockets.in('london').emit('football',/* data */)
命名空間football
事件/london/football
你可以這樣做io.of('/london').in('football').emit('update',/* data */
說,在路線/london
在房間football
發出update
事件。它在我看來稍微快一點,因爲它不會將一個房間中的許多用戶分組,而是使用名稱空間來解決排放事件。
房間按城市和興趣。 io.sockets.in('london:football')
這是一個特定的城市和體育的房間。
這個房間裏的每個人都可以獲得有關足球運動的更新。
第一個選項會產生大量不必要的流量,這是我試圖避免的與房間。 第二個,我不確定我是否可以使用它。據我所知,每個客戶端只能同時在一個命名空間中,對嗎? 第三個選項是我已經想到的,如果我找不到更好的解決方案,可能會做,但在我的情況下,我必須做很多組合。在應用程序中維護很多房間是否很昂貴? 謝謝。 –
我會將其標記爲已接受,因爲我會爲第三個選項做準備。 –