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

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

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

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

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

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

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

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でした。