websocketで遊んでみた powered by Jetty 8

とりあえずベタベタにチャット的なものを。

ソースコードhttps://github.com/hogelog/chatty に。

Windowsで動くWebSocketサーバをサクッと書くにはJavaでJetty使うのが一番楽だなあということがよくわかりました。rubyのアレとかpythonのソレとかこれとか、だいたいlibeventやらなんらかのネイティブライブラリを使っているので面倒。JettyでWebSocket使うには、pom.xmlを適当に仕上げて*1、ソース書いて、あとは

 $ mvn jetty:run

と叩くだけで依存するライブラリ落としてきて(ネイティブライブラリのビルドとかが始まることなしに)普通にサーバが動き始める。良い。

pom.xmlにjetty-websocketを記述。

        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-websocket</artifactId>
            <version>8.1.0.RC1</version>
        </dependency>
@WebServlet("/chatty")
public class ChattyServlet extends WebSocketServlet {
    public WebSocket doWebSocketConnect(HttpServletRequest request, String protocol) {
        return new ChattyWebSocket();
    }
}
public class ChattyWebSocket implements WebSocket.OnTextMessage {
    public void onOpen(Connection connection);
    public void onClose(int closeCode, String message);
    public void onMessage(String data);
}

こんな感じで書く。WebSocket.OnTextMessage以外にもOnBinaryMessageとかもあるし普通に使いやすそう。

http://download.eclipse.org/jetty/stable-8/apidocs/org/eclipse/jetty/websocket/WebSocket.html

*1:それが面倒なんだろうけど

test