2009-02-16 30 views
6

我感到有點困惑 - 大約24小時,我一直在考慮在我的項目中使用哪一組廣播技術。要使用哪種羣組消息技術?

基本上,我需要的是:

  • 由任何客戶端創建組(通過一些後端過程)
  • 廣播消息(1:N,N:N)
  • (潛在地)直接發送的消息(1:1)
  • (重要)認證/授權客戶提供我自己的後臺(比如,通過某種HTTP API的)
  • 能夠通過後臺處理(或服務器插件)踢特定的客戶端

這是我將有:

  1. 後端相關過程(ES)在Ruby或HAXE
  2. 前端的JS + HAXE(FLASH9) - 在瀏覽器中,所以理想通信通過80/443,但不一定。

所以,這項技術將不得不在Haxe for Flash和Ruby中輕鬆訪問。

我一直在想:RabbitMQ(或OpenAMQ),RabbitMQ + STOMP,ejabberd,ejabberd + BOSH,juggernaut(需要爲它編寫一個Haxe庫)。

任何意見/建議?

回答

1

如果你打算做Flash dev你看過SmartfoxServer嗎?它擁有你想要的一切,並擁有本地的Flash客戶端庫。我使用了一個項目來管理成千上萬的連接用戶。

http://www.smartfoxserver.com/

+0

但它沒有Ruby庫,對不對? – 2009-02-16 01:46:04

1

羣組溝通是一個稍微不同於簡單消息/排隊的野獸。

大多數組通信系統是商業,但有兩種(據我所知)的開源/免費,你可以看看:

兩個這些可能很難找到Ruby綁定。傳播,可能是OpenAIS,將客戶端視爲可信,所以基於瀏覽器的客戶端沒有意義。您需要讓您的瀏覽器前端與後端的組客戶端交談。

+0

是的,我知道Spread,幾年前我開發了一個Objective Caml綁定...看起來Spread 4.0已經發布了,大約3年前呢? 無論如何,謝謝:) – 2009-02-16 01:42:12

3

尤里,

的RabbitMQ,HAXE和AS3:http://geekrelief.wordpress.com/2008/12/15/hxamqp-amqp-with-haxe/

的RabbitMQ,紅寶石和ACL:http://pastie.org/pastes/368315

你可能也想看看使用Nanite與RabbitMQ的管理後端羣組:http://brainspl.at/articles/2008/10/11/merbcamp-keynote-and-introducing-nanite

你說你需要:

* broadcast messages by any client (1:N, N:N) 
* (potentially) direct messages (1:1) 

你可以很容易地使用RabbitMQ做兩個。 RabbitMQ支持兩種情況,1:N pubsub和1:1消息傳遞,具有「直接」交流。

直接交換模式如下:

任何發佈者(羣組成員)將消息發送到所述代理與「路由密鑰」如「尤里」。 RabbitMQ將此密鑰與路由表中的訂閱綁定(又名「交換」)匹配。每個綁定表示由隊列訂閱,表示對具有給定路由密鑰的消息的興趣。當路由和綁定密鑰匹配時,消息會被路由到隊列以供客戶端(組成員)隨後使用。這適用於1:N和1:1的情況; N:N建在1:N上。

介紹路由模式:http://blogs.digitar.com/jjww/2009/01/rabbits-and-warrens/

總介紹:http://google-ukdev.blogspot.com/2008/09/rabbitmq-tech-talk-at-google-london.html

您還需要:

* (important) authenticate/authorize clients with my own backend (say, through some kind of HTTP API) 

請參閱本(以上鍊接)的ACL代碼。還有一個RabbitMQ的HTTP接口,但我們還沒有將HTTP前端與ACL代碼結合起來。儘管如此,這應該不會讓人失望。請到最近討論過這個話題的rabbitmq-discuss列表。

您還需要:

* create groups (by some backend process) 
* to be able to kick specific clients by backend process (or server plugin) 

我建議看着像Nanite和Workling工具是如何做到這一點。組創建通常不是消息傳遞系統的一部分,相反,在RabbitMQ中,您使用訂閱創建路由模式。您可以通過向他們發送消息來踢特定客戶端,方法是使用他們用來將其消費隊列綁定到交易所的密鑰。

希望這會有所幫助!

亞歷

0

其他開源消息,其支持踐踏協議經紀人OpenMQ,它是包含在GlassFish中V3和GlassFish 2.1.1也獨立工作,很快在JBoss消息代理,HornetQ的V2.1。 OpenMQ支持對RPC風格通信很有用的臨時隊列,但ActiveMQ在Stomp適配器中也提供了一些有趣的功能。