2017-04-17 76 views
-2

我們正在通過節點js項目中的socket.io實現聊天和其他通知。將用戶套接字映射存儲到全局變量中

我們需要保持用戶 - >套接字映射。

爲此,我們在app.js

global.user_sockets = {}; 

聲明全局變量,當令牌authetication後新的連接創建分配用戶ID,插座映射user_sockets陣列。

user_sockets[data.userId]=socket; 

對於使用全局變量有很多推測。一些用戶表示,使用多個進程時會不太好。

對此有何解決方案?

+0

你看看Redis的發佈/訂閱嗎? – Gntem

+0

我們也考慮過這個問題,但是添加另一個內存管理層而不是這個實現有用嗎? – jit

+0

好吧,如果你的用戶通過登錄開始會話,你可以將socket.id和用戶會話ID關聯起來,然後可以使用傳遞的socket.io服務器對象作爲參數,並調用發出等等。你也可以使用Redis發佈/訂閱併發布格式化的消息,並讓訂閱者函數處理所有內容,並在整個工作中將其保持爲最小。許多人會同意使用全局變量不是最好的選擇。您可能需要評估許多/其他選項以得出最適合您的應用程序的選項。 – Gntem

回答

0

您可以將user_sockets作爲參數傳遞給您正在使用的函數而不是全局變量。但是這會使參數數量增加1,我認爲這不是問題。

相關問題