2017-07-24 83 views
0

我試圖創建一個多用戶和多權限系統,使用socket.io爲了使許多功能實時和流暢。Socket.IO,多個用戶不同的功能

我有一切設置和功能上工作的頁面加載,查詢數據庫和拉動相關數據基於用戶,他們的權限和他們是什麼組的一部分然而我將如何分配此用戶的套接字,它保留了這個'用戶信息',比如他們使用的id以及你在會話數據中常見的其他東西?

從我所看到的情況來看,只要頁面被加載,刷新或關閉,套接字ID就會重置和更改,因此我無法將此ID存儲在數據庫中臨時對用戶查詢 - 我有點卡住在最好的方式/做法去做這件事。

編輯:我應該提一下,我的應用程序已經構建完成,除了使用Express的套接字外,還有其他功能。

+0

調查FeathersJS。我相信它擁有您需要的一切內置於易於使用的後端框架。如果您不打算使用框架,則可以根據用戶數據庫標識在socket.io中設置通道。這可能是一個痛苦的執行,所以我建議看看FeathersJS。 –

回答

0

用戶導航到的每個新頁面都將關閉先前的socket.io連接並創建一個新頁面,並且每個新的socket.io連接將有一個新的socket.id,這是正確的。 socket.id並不意味着用作對特定用戶的持續引用。這只是對特定連接的參考。

相反,它聽起來像你想要的是某種用戶會話,你可以在每次有新的socket.io連接時持久地識別用戶。然後,您將使用您自己的用戶ID作爲可應用於每個傳入socket.io連接的永久ID。

這裏通常的方案是使用類似express-session和/或護照的方式設置常規http會話。一旦你有了,你有一種方法來識別所有傳入的http連接,他們屬於哪個用戶。由於每個socket.io連接都以http請求開始,這意味着您可以識別所有socket.io連接。要做到這一點,您既可以使用快速會話,也可以使用express-socket.io-session來完成大部分工作,或者您可以按照以下說明自行設置:How to share sessions with Socket.IO 1.x and Express 4.x?