-2
我們正在通過節點js項目中的socket.io實現聊天和其他通知。將用戶套接字映射存儲到全局變量中
我們需要保持用戶 - >套接字映射。
爲此,我們在app.js
global.user_sockets = {};
聲明全局變量,當令牌authetication後新的連接創建分配用戶ID,插座映射user_sockets陣列。
user_sockets[data.userId]=socket;
對於使用全局變量有很多推測。一些用戶表示,使用多個進程時會不太好。
對此有何解決方案?
你看看Redis的發佈/訂閱嗎? – Gntem
我們也考慮過這個問題,但是添加另一個內存管理層而不是這個實現有用嗎? – jit
好吧,如果你的用戶通過登錄開始會話,你可以將socket.id和用戶會話ID關聯起來,然後可以使用傳遞的socket.io服務器對象作爲參數,並調用發出等等。你也可以使用Redis發佈/訂閱併發布格式化的消息,並讓訂閱者函數處理所有內容,並在整個工作中將其保持爲最小。許多人會同意使用全局變量不是最好的選擇。您可能需要評估許多/其他選項以得出最適合您的應用程序的選項。 – Gntem