0

我正在处理用户登录的网络聊天,并可以向任何其他登录用户发送消息。这是通过在客户端使用长轮询和在服务器端使用异步 java servlet 来实现的。它运行良好,直到我从两个不同的设备以相同的名称登录。一旦 servlet 接收到用户 A 的消息,它就会搜索 A 的第一个等待请求(首先是因为第二个可能正在等待另一个消息),将消息发送给他并将其从内部队列中删除。但是,当他们是两个登录的 A 客户端(例如移动和 PC)时,只有第一个会收到消息。我无法为所有 A 请求发送它,因为第二个等待的 A 请求可能是来自一个设备的另一个请求,并且两次发送消息并不好。您对如何在服务器端解决此问题有任何想法吗?如何向用户 A 的所有设备发送消息,

谢谢

4

1 回答 1

1

使用 ZeroMQ 或 RabbitMQ 等消息队列技术来确保消息、扇出等的唯一传递。不要重新发明这个特定的轮子。

还有 JMS——我从来没有使用过它,因为在这些情况下我需要独立于语言,但如果你愿意假设 Java 到 Java,它可能会更简单。

于 2013-03-12T20:15:31.880 回答