我是 Django 频道和 ASGI 应用程序本身的新手,所以在构建私人聊天应用程序时我有点困惑。
私人聊天的教程不多,都是针对聊天室和广播的。我对如何进行私人聊天几乎没有什么想法,但我不确定采用哪种方法。
- 我的第一个想法是不使用通道层并单独处理每个连接。我的意思是每次用户来到聊天应用程序时,它都会打开一个名为 chat__{userid} 的连接,如果 user_A 向 user_B 发送消息,它将首先检查 user_A 是否有权向 user_B 发送消息,然后调用 send user_B 上的方法,在发送消息后将确认发送回 user_A。
上述实现存在问题,如果用户打开不同的选项卡,我应该如何处理。
要使用 channel_layers 建立用户之间的连接,如果他们在彼此聊天时都在线,但是当用户与多个用户聊天时会出现问题,我是否需要为每个对话打开多个 WebSocket 连接。这将解决多个选项卡和会话问题,因为我可以将它们全部添加到同一个通道层中。
第三种方法类似于第一种方法,但不同之处在于这次使用通道层,以便单个用户的所有会话都可以在一个通道层中,并且我可以将消息广播到同一用户的所有会话。
我认为第三种方法适用于这种情况,但正如我上面提到的,我在 ASGI 应用程序方面没有太多经验,也不知道哪种方法最有效。
任何建议表示赞赏。