在许多帖子或文章中,我经常看到类似的东西。
Client-Side :
socket.emit("shhh!Secrets", {
To : "AlexId",
Message : "Hello World!"
})
Server-Side:
socket.on("shhh!Secrets", (Send) => {
io.in(Send.TO).emit("SO...Secrets", Send.Message)
})
socketId
,特定用户socketObj
或room
为基础。
如果我更改客户端源代码并与其他room
或socketId
进行更改怎么办,那么我发疯的消息将保存到其他聊天时间线中...
答案 0 :(得分:3)
第一种方法
Socket.IO是有状态的。因此,此智能套接字不会忘记每个事件调用中的您。
让用户说要加入 room001
因此,在将套接字连接到特定房间时,将RoomId
保存到socket.roomId = "room001"
然后使用io.in(socket.roomId).emit("SO...Secrets", "message")
第二种方法
从不更改,客户直接将消息发送到特定房间。
Server-Side:
socket.on("shhh!Secrets", (Send) => {
// Send message only if the user already joined to this Room
if (Send instanceof Object && socket.rooms[Send.TO] === Send.TO)
io.in(Send.TO).emit("SO...Secrets", Send.Message);
})
答案 1 :(得分:0)
穆罕默德(Mohammed),当然您可以更改客户端代码,但是您需要知道真实的userId(在您的示例中为AlexId),并且通常是uuid,不容易获得...因此,做到这一点。
顺便说一句,通常在文章中使用非常简单的示例,并且不提及安全性方面,因此请谨慎操作!