つづいて、ハンドラー部
まずは、プログラム
package com.ttProject.webSocket.library;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
import com.ttProject.webSocket.manager.SessionManager;
/**
* WebSocketとの通信を実行するApacheMina用のハンドラー
*/
public class WebSocketHandler extends IoHandlerAdapter {
/**
* 例外処理用
*/
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
cause.printStackTrace();
super.exceptionCaught(session, cause);
}
/**
* クライアントとのセッションが確立したときの処理
*/
@Override
public void sessionCreated(IoSession session) throws Exception {
session.setAttribute("manager", new SessionManager(session));
super.sessionCreated(session);
}
/**
* メッセージを受け取ったときの処理
*/
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
if(message instanceof IoBuffer) {
SessionManager smanager = (SessionManager)session.getAttribute("manager");
smanager.setMessage((IoBuffer) message);
}
super.messageReceived(session, message);
}
}
セッションは固有のものなので、そのセッションに属性として、データと処理を引き受けるクラスをくっつけてあります。
最終更新:2011年02月11日 21:21