[英]Should socket.io join room or listen on unique ID to receive message from server
我從事實時聊天項目。 多用戶可以在房間內聊天和接收聊天每個房間都有一個唯一的ID。 當用戶加入房間時,我應該使用哪種情況? 情況1:
-用戶向服務器發出一個事件“加入”,數據是房間 ID,SocketIO 服務器讓用戶加入房間,名稱是 ID。 然后,當用戶聊天時,用戶向服務器發出帶有聊天數據的事件“聊天”,服務器通過 io.in(roomID).emit("chat",chatData) 向該房間中的所有用戶發出該聊天
案例 2:當用戶加入房間時,用戶可以監聽一個名為 roomID 的事件
socket.on(roomID, handleChatDataFunc)
當用戶聊天時,它的工作方式類似於案例 1,用戶向服務器發出帶有聊天數據的事件“聊天”,但現在服務器將廣播一個名稱為 roomID 的事件
io.emit(roomID, chat Data);
所以所有用戶都聽一個事件名稱 roomID 將收到 chatData 所有聊天都將是公開的,所以我不需要經過身份驗證的用戶
一個房間的原因是服務器可以只向那些用戶發射。 客戶端預先向服務器聲明他們感興趣的內容,以便服務器知道要發送什么,不發送什么。
您建議讓客戶端只收聽他們想要的消息名稱,這意味着您的服務器必須將所有數據發送給所有用戶,無論他們是否正在收聽 - 無論他們是否想要該信息。 這是低效的(將數據發送給他們不想要或不需要的客戶)並且對於大量客戶來說完全不切實際。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.