2017-08-26 100 views
0

我正在使用Node.js的socket.io模塊進行用戶之間的通信。我想要的是:一旦某個特定的用戶建立了連接,我需要將他/她的套接字存儲在數據庫中,以便萬一需要時,我可以在任意時刻發送消息給他/她。所以,因爲我可以有數百個用戶,所以我想將他們的套接字對象存儲在數據庫中。 爲此,我使用了Schema類型Mixed,因爲套接字是對象。然而,套接字是圓形對象,所以當我試圖在數據庫中存儲套接字時,我的堆棧溢出。我對此感興趣:是否可以在MongoDB中存儲這樣的循環對象?我設法將套接字存儲在變量中,稍後重複使用它們來發送消息,所以如果我將這些套接字存儲在某些數據結構中,這是可能的,但我有興趣知道它們是否可以存儲在數據庫中?謝謝在MongoDB中存儲循環對象

回答

0

也許不可能存儲循環對象,並且在數據庫中存儲套接字ID是完全錯誤的,因爲它在時間上發生變化並且將是無用的。

你可以做的和(你應該做的),是爲用戶創造空間:

io.on('connection', function(socket){ 

    // you are emitting this event from client with your choose of identifier 
    socket.on('auth', function(userId) {  
     socket.join('room:' + userId) 
    }) 

}) 

然後你就可以,因爲你正在創建一個私人房間爲該用戶,與userId等發出事件給特定的用戶:

var userId = 1234 
io.in('room:' + userId).emit('hello', { 'asd': 'xxx' });