0
我有Node/Express應用程序,我試圖跟蹤活動用戶。使用Socket.io和Firebase跟蹤活動用戶
該應用程序依靠外部API發出並接收JWT令牌。這些令牌直接傳遞給客戶端,在客戶端進行存儲並用於後續API請求。這就是說,我沒有使用節點「會話」。
我正在使用socket.io鉤入自定義login
,logout
和disconnect
事件。當這些事件觸發時,我可以根據需要更新數據庫(firebase)並添加/刪除活動用戶。
問題是我的應用程序在多個服務器間負載均衡,所以我不能在socket.id
之間鍵入活動用戶,因爲它可能會更改。我的想法是通過user_id
鍵入活動用戶,但是,我無法弄清楚如何從disconnect
事件中獲取用戶標識。其他事件被觸發的客戶,所以我可以只發送用戶ID到服務器...
client.js
import io from 'socket.io-client';
const socket = io('/');
socket.emit('login', {user_id: 1234, email: '[email protected]'})
server.js
io.on('connection', (socket) => {
const activeUsersRef = admin.database().ref('activeUsers');
socket.on('login', (userData) => {
activeUsersRef.update({
[userData.user_id]: userData
})
});
socket.on('logout', (userData) => {
activeUsersRef.update({
[userData.user_id]: null
})
});
socket.on('disconnect',() => {
// How to get user ID?
activeUsersRef.update({
[???]: null
})
});
});
如果我沒有跟蹤節點服務器中的用戶會話,我如何才能訪問disconnect
事件中的用戶ID?
我發佈了以前的答案[這裏](http://stackoverflow.com/questions/37591541/how-to-change-status-of-perticular-user-when-socket-is-disconnect/37592164#37592164)這可能有幫助 – Rho