WebSocketメモ書き
WebSocketをはじめようとJetty7でWebSocket開発という記事を読んでみたのですが何点かつまづいたのでメモしときます。元の記事の補足なので情報量はあまりないです。
WhisperServletクラス
元の記事のWhisperServletはファイルの置き場所やソースコードの一部が端折られていて困りました。
ファイルの置き場所は以下の通り。
aaa/src/main/java
ここにjp.co.mapion.honjo.aaaというpackageを作成してWhisperServlet.javaを配置します。
端折られているソースコードは以下のような感じです。
package jp.co.mapion.honjo.aaa; import java.io.IOException; import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.websocket.WebSocket; import org.eclipse.jetty.websocket.WebSocketServlet;
ここから何したらいいの?
元の記事はtelnetでハンドシェイクを確認するところで終わっていて、ここから何をやっていけばよいのかわかりませんでした。このWhisperServletは簡単なチャットになっていて、そのクライアントを作る必要があります。これについてはEmerge Technology: WebSocketでChatを作ってみたに掲載されているhtmlのソースコードをとってきて、ws://の部分を自分のアドレスに合わせて書き換えればokです。今回の例に合わせると以下のようになります。
<html> <head><title>Web Socket Chat</title></head> <body> <script> var ws = new WebSocket("ws://127.0.0.1:8080/aaa/whisper/"); ws.onopen = function() { }; ws.onmessage = function(message) { var txtNode = document.createTextNode(message.data); var brNode = document.createElement('br'); var cnode = document.getElementById("content"); cnode.appendChild(txtNode); cnode.appendChild(brNode); }; </script> <h1>Web Socket Chat</h1> <div id="content"> </div> <input id="message" type="text" onChange="javascript:ws.send(this.value);this.value='';"/> </body> </html>
あとはstart.batを実行したあとでこのhtmlを開いてみます。
成功すれば以下のようにWebSocket is success!!!という文字がでてきます。あとはチャットとして使えます。