如何使用socket io发送私人消息?

Nan*_*ane 1 node.js socket.io

我对 socket io 很困惑,我应该如何发送私人消息

方法一

socket.emit(`privateMessage:${req.user._id}`, 'someones Private message to User')
Run Code Online (Sandbox Code Playgroud)

并且在客户端我收到此消息与用户 ID

方法二

socket.to(socketID).emit(`privateMessage`, 'someones Private message to User')
Run Code Online (Sandbox Code Playgroud)

我不知道哪种标准方法可以做到这一点,我也在使用 redis pub sub。我很困惑如何将这些捆绑在标准架构中

jfr*_*d00 6

如果您有socket目标用户的对象,那么要仅向该用户发送消息,您应该使用:

socket.emit(...)
Run Code Online (Sandbox Code Playgroud)

如果您没有socket目标用户的对象,但有该用户的 socketID,那么您可以使用:

io.to(socketID).emit(...)
Run Code Online (Sandbox Code Playgroud)

真的没有理由使用socket.to(socketID)socketID 是 id 的地方,socket因为您已经拥有socket目标用户的对象,所以socket.emit()更直接,可能会稍微快一点。

  • @Nane - 当用户连接时,他们会获得一个套接字对象 - 一个代表连接的实际 Javascript 对象。当它们连接时,它会在 `io.on('connection, function(socket) {});` 中呈现给你。我是说,如果您已经拥有目标用户的套接字对象(因为您保存了它,或者因为您从该套接字收到了一些其他消息,或者您以其他方式获得了它),您可以只使用`socket.emit()`。如果没有,您可以要求 socket.io 库使用 `io.to(socketID).emit()` 为您查找。 (2认同)