Sharable

システム&ウェブのシェアラブル

Lv.11 Web socketで双方向通信を実現したい。[play framework2.0] [java]

2012年3月29日
※Web Socketについて詳説してくれているブログ。
みずぴー日記さん。
すごい瑞々しいラクダが特徴的。かなりアーティスティックな方なんじゃないかと、プロフィール写真を見て思った(笑)。アスキーアートがカワイイし効果的。

Web Socket※を使う場合、実装上かなり違いがあります。

  • まずActionメソッドは、Resultの代わりにWebSocketを返す
  • (WebSocketから)ヘッダー情報は取れる
  • セッションは取れる
  • リクエストBodyにはアクセスできない
  • HTTPレスポンスにはアクセスできない

公式ドキュメントのscalaっぽいコードをjavaに直して実行してみる。

public static WebSocket<String> index()
{
 return new WebSocket<String>()
 {
  // 接続(ハンドシェイク)したときによばれる
  public void onReady(WebSocket.In<String> in,
    WebSocket.Out<String> out)
  {
   // メッセージを受信したら
   in.onMessage(new Callback<String>()
   {
    public void invoke(String event)
    {
     System.out.println(event);
    }
   });

   // ソケットが閉じたら
   in.onClose(new Callback0()
   {
    public void invoke()
    {
     System.out.println("Disconnected");
    }
   });
   // Helloと出力する
   out.write("Hello!");
  }
 };
}

web socketの確認方法

上記のコードを実装して、runさせた状態で、http://websocket.org/echo.htmlにアクセス。


a:まずブラウザがweb socketをサポートしているかどうかを確認。
b:次にlocationをws://localhost:9000に設定して、connectをクリック。
c:Messageに好きな文言を入れてsendをクリック
d:メッセージが書き出されていることを確認。

アセスメント

  • web socketを使う場合に通常と異なるルールを知っている
  • web socketの確認方法が分かる

公式ドキュメントは、handling web socketでした。

このエントリーをはてなブックマークに追加