1

将 MQTT 协议评估为聊天服务,以满足连接受限的客户端的 1-1、1-n、nn 通信。

当前的设计是让每个客户默认根据他们的唯一 ID 订阅一个频道,e.g. 'users/9932947'. Messages (payload: JSON) published to this channel would contain a new randomly generated topic, e.g. 'conversations/2938475', for the conversation to continue.

这将允许 1-1、1-n 和 nn 通信。而且,这意味着发送的第一条消息将开始“对话”。通过初始化新消息,可以使用相同的收件人列表开始新的对话。(我假设插件可以处理有效负载中列出的多个收件人,并且处理 1-1,1-n,nn 对话的逻辑将发生在客户端)

然后我面对现实,在 pub/sub 范式中,如果用户 1234 向用户 5678 发送消息,但用户 5678 还没有订阅,那么消息就会丢失,在某些情况下,这会很糟糕。使用“保留”标志并不理想,因为可能会发送多条消息。

因此,一旦订阅者收到消息,逻辑流程将指示接收者订阅有效负载中标识的新主题。我可能打破了 pub/sub 范式,或者在动态主题和消息过期方面我遗漏了一些东西。

知道我的代理/队列系统可以从我的联系人数据库中消费,是否可以为用户自动创建持久性会话并且这些用户订阅这些随机生成的主题/对话?这是一个糟糕的设计吗?缩放有任何问题吗?

4

0 回答 0