Hatena::ブログ(Diary)

hogeなlog

プロフィール

hogelog

hogelog

小室 直(こむろ すなお)。電気通信大学2003年入学。2010年修士卒業。プログラミングとかしてます。

カレンダー
1984 | 01 |
2006 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2010 | 01 | 06 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 05 | 08 | 09 | 10 | 12 |
2012 | 01 | 04 | 06 |

December 20(Tue), 2011

[][] websocketで遊んでみた powered by Jetty 8

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

f:id:hogelog:20111220013639p:image

ソースコードは 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:それが面倒なんだろうけど

最近のコメント