NodeJS - 处理私人消息的最佳方式?

NodeJS - Best way to handle private messaging?

我想用NodeJS和websockets创建一个私人消息系统。 我想知道创建这样的系统的最佳方法是什么。

是为每个用户创建 1 个 nodeJS 服务器并绑定监听事件更好,还是我应该为 2 个用户之间的每个对话创建一个唯一的 port/server。 即

conversation 1 (user1 & user2): port 8080

conversation 2 (user2 & user3): port 8081

conversation 3 (user1 & user3): port 8082

Is it better to create 1 nodeJS server and bind listen-event for each user, or should I create a unique port/server for each conversation between 2 users. i.e.

都没有。


您可以轻松地在两个用户之间创建私人对话,一台服务器侦听一个端口并允许用户连接到该服务器,然后确定他们希望与哪个其他用户进行私人对话。

  1. 用户在登录并连接到服务器时使用某种凭据向服务器标识自己。然后您的服务器知道哪个用户属于哪个连接。
  2. 然后,服务器可以通过简单地允许用户 A 将消息传递给用户 B 和 vice/versa 来促进任何两个用户之间的私人对话,但不允许其他任何人访问这些消息。不需要每个用户的私人服务器。不需要自定义端口。您确实需要某种用户身份验证服务,这样您就可以知道哪个用户具有适当的可信度。

您可以在此 socket.io demo chat server.

中看到您所询问的部分内容

下面是关于其工作原理的更详细说明:

  1. 用户 A 连接到服务器并识别自己。
  2. UserB 连接到服务器并识别自己。
  3. UserC 连接到服务器并识别自己。
  4. 用户A向服务器发送消息,指示服务器向用户C发送私信
  5. 服务器从用户 A 接收到该消息并将其转发给用户 C。
  6. 用户C收到用户A的私信。
  7. 服务器不会存储来自用户 A 的消息,也不会将其发送给任何其他用户(因此使其成为私人消息)。
  8. 然后用户 C 可以使用相同的机制响应用户 A。

注意:几乎任何方案都要求您同时拥有用户身份验证和用户标识符。然后,您还必须在用户界面中显示它,以便给定用户可以识别他们希望与哪个当前连接的用户进行通信。