应该 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)[=13= 向该房间中的所有用户发送该聊天]

案例二: 当用户加入房间时,用户可以收听一个名为 roomID 的事件,如

socket.on(roomID, handleChatDataFunc)

当用户聊天时,它像案例 1 一样工作,用户向服务器发出一个带有聊天数据的事件“聊天”,但现在服务器将广播一个名为 roomID 的事件,例如

io.emit(roomID, chat Data);

所以所有用户收听事件名称 roomID 都会收到 chatData 所有的聊天都是 public 所以我不需要验证用户

房间的原因是为了让服务器只能发送给那些用户。客户端预先向服务器声明他们感兴趣的内容,以便服务器知道发送什么和不发送什么。

您只让客户收听他们想要的消息名称的建议意味着您的服务器必须将所有数据发送给所有用户,无论他们是否正在收听 - 无论他们是否想要该信息。这是低效的(向客户发送他们不想要或不需要的数据)并且对于大量客户来说完全不切实际。