2

我目前正在开发一个 web 应用程序,它需要一个 websocket 连接来接收来自服务器的事件通知。

客户端被分成组,组中的所有客户端必须接收相同的事件通知。

我认为 ActiveMQ 可能支持这种模型,为每组客户端使用不同的队列。使用 stomp 将事件推送到 ActiveMQ 也相对容易,然后为客户端使用 stomp-over-websockets。

我看到的问题是消息不应仅由一个客户端使用,而应分发给连接到队列的所有客户端。

此外,不应存储队列。如果在生成事件时客户端没有连接,那么它将永远不会收到它。

我不太了解 ActiveMQ,所以我不确定这是否可行,或者是否有另一个简单的解决方案可以用来代替编写我自己的消息服务器。

谢谢

4

2 回答 2

3

ActiveMQ 5.4.1 原生支持 WebSockets(就像 Stomp、JMS 等)。有队列的概念(你提到了这些),还有主题的概念。

在队列中,只有一个消费者会收到一条消息,在一个主题中它会发送给所有订阅者。请参阅:http ://activemq.apache.org/how-does-a-queue-compare-to-a-topic.html

有一些 Stomp-WebSocket JS 库随处可见。Kaazing 有一个包含 ActiveMQ 的包,并支持基于 WebSockets 的 JMS API/Stomp 协议,支持旧浏览器、不同的客户端技术和跨站点安全性。

于 2011-04-08T06:35:51.030 回答
2

查看Pusher,否则您将需要支持基于主题的发布/订阅的东西。你可以看看RedisRabbitMQ

于 2011-03-14T07:56:35.693 回答