我目前正在开发一个web应用程序,它需要一个websocket连接来接收来自服务器的事件通知。
客户端分组,组中的所有客户端必须收到相同的事件通知。
我认为ActiveMQ可能支持这个模型,为每组客户端使用不同的队列。使用stomp将事件推送到ActiveMQ也相对容易,然后为客户端使用stomp-over-websockets。
我看到的问题是,消息不应仅由一个客户端使用,而是分发给连接到该队列的所有客户端。
此外,不应存储队列。如果在生成事件时未连接客户端,则它将永远不会收到它。
我不太了解ActiveMQ,所以我不确定这是否可行,或者是否有其他简单的解决方案可以用来代替编写我自己的消息服务器。
由于
答案 0 :(得分: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协议,支持旧浏览器,不同的客户端技术和跨站点安全性。
答案 1 :(得分:2)