Multi-user real-time web 应用目前是一个热门的方向, 如上个月Google Wave的demo就有很酷的real-time gadget demo。这些实时的web应用包括普通的web协同应用,web game, 各种SNS扩展应用及SNS game等。

此类应用前端实现有两种方式,socket/flash或ajax方式。为了达到实时效果,使用轮询的ajax通常占用服务器资源过大,目前逐渐被comet方式代替。服务器的实现通常需要开发者自行实现基于业务的socket server,但自己实现的server通常存在性能及可扩展性的问题,因此实现全部功能需要投入大量的开发精力。

Hemlock是一套适合此场景的可扩展框架。它后端使用XMPP MUC chatroom作为多人交互应用的通道,通过flash长连到XMPP Server上。由于XMPP Server(如openfire, ejabberd等)本身就支持多服务器,因此使用默认的版本就可以支持上十万的并发,如果稍加优化,同时支持上百万用户也不会有太大问题。

比如下图是用Hemlock实现一个多人聊天的实时白板程序,
真实demo

 

(图片来源:Fancy a draw? Hemlock in action)

另外官方网站还有一个
football3s多人足球游戏的demo。

安装Hemlock的文档可参阅
http://hemlock-kills.com/learn,文档是以ejabberd为例的,经Tim验证也可安装在openfire/Linux上。唯一需要注意的配置是SERVER必须和xmpp domain一致。开发的环境需要用到Flex SDK, Java, Ruby, Rake等。

Hemlock底层使用jive的
XIFF library, 在XMPP的基础上做了多人交互数据包的封装,并且大部分编程都可以基于事件机制,比较容易上手。大部分Web Game都有生命周期短,开发周期要求短的特点,因此使用Hemlock可以节约大量底层开发时间,有兴趣的朋友不妨一试。


本文来源:http://hi.baidu.com/jabber