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能夠節約大量底層開發時間,有興趣的朋友不妨一試。web