今回は、
MyWebSocketServlet
クライアントから接続要求があった時に、
以下のように新規クラスを作成してください。
- ソース・
フォルダー: WebSocketChat/src/ main/ java - パッケージ:webSocketChat
- 名前:MyWebSocketServlet
- スーパークラス:org.
eclipse. jetty. websocket. WebSocketServlet
クライアントから接続があった時に呼ばれる
package webSocketChat;
import javax.servlet.http.HttpServletRequest;
import org.eclipse.jetty.websocket.WebSocket;
import org.eclipse.jetty.websocket.WebSocketServlet;
public class MyWebSocketServlet extends WebSocketServlet {
@Override
protected WebSocket doWebSocketConnect(HttpServletRequest request,
String protocol) {
return new MyWebSocket();
}
}
WebSocketChat
WebSocketChatの本体を実装します。次のように新規クラスを作成してください。
- ソース・
フォルダー: WebSocketChat/src/ main/ java - パッケージ:webSocketChat
- 名前:WebSocketChat
- スーパークラス:java.
lang. Object - 「public static void main(String[] args)」
にチェック
このクラスでは、
package webSocketChat;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
public class WebSocketChat {
public static void main(String[] args) throws Exception {
new WebSocketChat();
}
public WebSocketChat() throws Exception {
Server server = new Server(8040);
ResourceHandler rh = new ResourceHandler();
rh.setResourceBase(this.getClass().getClassLoader().getResource("html").toExternalForm());
MyWebSocketServlet wss = new MyWebSocketServlet();
ServletHolder sh = new ServletHolder(wss);
ServletContextHandler sch = new ServletContextHandler();
sch.addServlet(sh, "/ws/*");
HandlerList hl = new HandlerList();
hl.setHandlers(new Handler[] {rh, sch});
server.setHandler(hl);
server.start();
}
}
それでは、
Server server = new Server(8040);
ポート番号を指定しJettyのサーバをインスタンス化しています。ここまでに作成したMyWebSocketServletは、
まず、
ResourceHandler rh = new ResourceHandler();
rh.setResourceBase(this.getClass().getClassLoader().getResource("html").toExternalForm());
setResourceBaseの引数には、
以上で、
次は、
MyWebSocketServlet wss = new MyWebSocketServlet();
ServletHolder sh = new ServletHolder(wss);
ServletContextHandler sch = new ServletContextHandler();
sch.addServlet(sh, "/ws/*");
ServletをHandlerとして登録する必要があると言及しましたが、
次に、
HandlerList hl = new HandlerList();
hl.setHandlers(new Handler[] {rh, sch});
server.setHandler(hl);
つまり、
最後にサーバを起動します。
server.start();
次回予告
次回は、