WebSocketでデータのやりとりをするプログラムを書いてみました。
Apache Minaをつかってテキストのやりとりをするだけのサーバーは書いたことあるんですが、
今回はHandShakeの部分でどうしてもバイナリをうけとらないとだめなので、その部分がよくわからなかったです。
でもとりあえずできました。
apache minaをつかってサーバーを書くいい練習資料にはなるのではないでしょうか?
(WebSocketはプロトコル仕様も非常に単純だし。)
まずは、エントリー部
package com.ttProject.webSocket;
import java.net.InetSocketAddress;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import com.ttProject.webSocket.library.WebSocketHandler;
/**
* WebSocketサーバープログラム
*/
public class Main {
private static final int PORT = 8080;
/**
* エントリー
* @param args
*/
public static void main(String[] args) {
try {
new Main();
}
catch(Exception e) {
e.printStackTrace();
}
}
/**
* コンストラクタ
*/
public Main() throws Exception{
SocketAcceptor acceptor = new NioSocketAcceptor();
acceptor.setHandler(new WebSocketHandler());
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 5);
acceptor.setReuseAddress(true);
acceptor.bind(new InetSocketAddress(PORT));
System.out.println("ServerStarted!!");
}
}
ポートを8080番に
IdleTimeをとりあえず5秒に
再起動時にBindExceptionがでたらめんどくさいのでsetReuseAddressを設定
今回はHandler部でIoBuffer経由でなまデータを利用するので、codec系の設定はなしです。
今後WebSocketのセキュリティーまわりの問題とか解決するときに、きちんとcodec等利用したプログラムにしたいと考えています。
最終更新:2011年02月11日 21:21