2011-02-16 47 views
2

我目前正在開發一個web應用程序,它需要一個websocket連接來接收來自服務器的事件通知。我應該使用websockets爲這個webapp使用什麼解決方案。 ActiveMQ的?

客戶端按組分組,並且組中的所有客戶端都必須收到相同的事件通知。

我認爲ActiveMQ可能可以支持這種模式,爲每組客戶端使用不同的隊列。使用stomp將事件推送到ActiveMQ也是相對容易的,然後爲客戶端使用stomp-over-websockets。

我看到的問題是消息不應該僅由一個客戶端使用,而是分發給連接到隊列的所有客戶端。

另外隊列不應該被存儲。如果客戶端在事件生成時沒有連接,那麼它將永遠不會收到它。

我不太瞭解ActiveMQ,所以我不確定這是否可能,或者是否有另一個可以用來代替編寫自己的消息服務器的簡單解決方案。

感謝

回答

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協議,支持舊版瀏覽器,不同客戶端技術和跨站點安全。

2

Pusher,否則你會需要的東西,支持基於主題的pub/sub。你可以看看RedisRabbitMQ

+0

Pusher似乎是一個非常好的網絡服務,但我想避免使用第三方服務。我會考慮RabbitMQ和Redis,謝謝。 – 2011-03-14 09:05:07

+0

不客氣。在客戶端看看[socket.io](http://socket.io/),它會照顧所有的瀏覽器和手機,即使它們不支持WebSocket。 – lebreeze 2011-03-14 13:24:50

相關問題