2012年12月6日木曜日

WicketでWebSocketを使ってみた

Wicketの6からWebSocketに対応したらしいので使ってみた。

  • 作ったもの
  • 感想
  • 引っかかったところ
作ったもの
簡単にいうと、チャットアプリケーション。
メッセージをAjaxで受け取り、チャット参加者へWebSocketでpush通知する。
クライアント側はjQueryで受け取ったメッセージをDOMへ追加する。

引っかかったところ
IWebSocketConnectionにはComponentをaddできない。送信できるのは文字列またはbyte配列。WebSocketRequestHandlerにはaddできるので、WebSocketBehaviorのonMessageで実装すればよいが、それってAjaxとなにが違うのかな?

web.xmlで、サーブレットコンテナに対応したfilterを設定しなければならない。wikiのCustom WicketFilterを参照。

JavaScriptの依存関係を設定しなければいけない。サンプルを参照。

感想
IWebSocketConnectionで送受信できるデータが文字列かバイト配列なので、実際はJSONを送受信することになると思われる。Javaオブジェクトとの相互変換を考慮する必要があると思う。

push通知が動作するまでは、手間がかかる割に動作はAjaxと変わらないのでモチベーションが上がらなかった。が、push通知で画面が更新されるようになると一気に楽しくなった。

やや話はそれるが、JavaScriptのライブラリがjQueryになったのも大きいと思う。