2009-02-16 84 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适配器中也提供了一些有趣的功能。

相关问题