2015-11-07 29 views
0

嗨我正在使用帶有節點js服務器的websockets,npm模塊是ws。我有一個數組,我救我所有的連接,但現在我不得不把它們分開,所以我做多維數組是這樣的:節點Js,websockets保存通道中的連接

users[channel1][user_id1] = ws_user_id1_connection 

的問題是,當我有1個用戶在多個通道:

users[channel1][user_id1] = ws_user_id1_connection 
users[channel2][user_id1] = ws_user_id1_connection 
users[channel3][user_id1] = ws_user_id1_connection 

從性能角度來看,這可以嗎?或者我可以通過其他方式完成此操作?如果我像這樣離開它,那麼用戶[channel1],用戶[channel2],用戶[channel3],它們只會引用ws_user_id1_connection。我的意思是,當我創建新用戶[channelNew]時,不會添加有關ws_user_id1_connection的所有數據,但只能引用它。這個想法是,我希望有一些房間/頻道,並在每個頻道有一些互聯網用戶,這樣他們就可以互相交流。這是正確的方式嗎?先謝謝你。

回答

1

假設channel1是一個聊天室,user_id1是房間中的用戶ID,那麼是的,這是實現它的好方法,您不應該爲每個通道創建不同的ws。你只需要一些信息添加到發送的數據,以便客戶知道什麼是與該消息相關的房間,是這樣的:

{ 
    'room': 'channel1', 
    'from': 'otherUser_id', 
    'msg': 'some text message' 
} 

我會建議不要使用channel指一個房間,因爲它可以與ws頻道混淆。我倒是也改變變量'users'的名稱,因爲它不引用用戶,我倒是離開它想:rooms[room_id1][user_id1] = ws_user_id1_connection

而且,你可能要檢查Socket.io,這是一個很好的NodeJS庫專爲種類的應用程序。