Javascript 聊天系统中的消息跟踪
我们已经在Node.JS中构建了一个聊天系统。其中,我们有三个用于传递消息的通道,一个使用Javascript 聊天系统中的消息跟踪,javascript,node.js,redis,mqtt,pusher,Javascript,Node.js,Redis,Mqtt,Pusher,我们已经在Node.JS中构建了一个聊天系统。其中,我们有三个用于传递消息的通道,一个使用mqtt协议,第二个使用第三方服务推送器通道,第三个基于gcm接收的消息获取服务。一旦消息从一个用户发送到第二个用户,它就会存储在redis中,直到它被发送到第二个用户为止。 我们面临的问题是,我们无法跟踪未送达的丢失邮件 你知道我们如何在聊天室里追踪信息吗 我们尝试了ack来自客户端的消息。但有时由于api故障等原因,我们也无法获得ACK。因此,我们无法跟踪消息 我还研究了消息传递系统,其中一些使用基于队
mqtt
协议,第二个使用第三方服务推送器通道,第三个基于gcm
接收的消息获取服务。一旦消息从一个用户发送到第二个用户,它就会存储在redis中,直到它被发送到第二个用户为止。
我们面临的问题是,我们无法跟踪未送达的丢失邮件
你知道我们如何在聊天室里追踪信息吗
我们尝试了ack
来自客户端的消息。但有时由于api
故障等原因,我们也无法获得ACK
。因此,我们无法跟踪消息
我还研究了消息传递系统,其中一些使用基于队列的消息代理。我正在考虑为此使用rabbit mq。有人能解释一下message broker是否能更清晰地传递消息吗?可能(除非有特殊情况)pub/sub不是您需要的合适工具。在这种情况下,pub/sub(mqtt)的问题是这是一种广播发布,这意味着您只是为订阅该主题的人发布了一条消息。发布/订阅有一种称为服务质量(QoS)的东西,它有3个级别,其中,代理处理此消息的行为将取决于您想要的传递的可靠性:
服务质素包括:
- 最多一次(0)
- 至少一次(1)
- 正好一次(2)
也许使用发布/订阅服务看起来更简单,因为它处理接收、管理和传递消息的复杂性,但它们的设计更适合于与随时间进出而不知道其他人的客户端分离。你检查过Redis Streams吗?这个问题太广泛了,请阅读关于什么是好的堆栈溢出问题的帮助