簡體   English   中英

socket.io 是否應該加入房間或監聽唯一 ID 以接收來自服務器的消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM