public void append(IoBuffer in) {
getBuffer().put(in);
}
}
}
6、继承处理器IoHandlerAdapter
public class NSMinaHandler extends IoHandlerAdapter {
private final Logger logger = Logger.getLogger(NSMinaHandler.class);
public static ConcurrentHashMap<Long, IoSession> sessionHashMap = new ConcurrentHashMap<Long, IoSession>();
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
session.closeOnFlush();
logger.error("session occured exception, so close it."
+ cause.getMessage());
}
//-------------UDP:过滤器的生成--------------------
mUdpClient.getFilterChain().addLast("codec", new ProtocolCodecFilter(new MyProtocalCodecFactory(Charset.forName("UTF-8"))));
public class MyProtocalCodecFactory implements ProtocolCodecFactory {
private final JsonMessageEncoder encoder;
private final JsonMessageDecoder decoder;
//getter and setter
}
public class JsonMessageDecoder extends CumulativeProtocolDecoder {
@Override
protected boolean doDecode(...){}
}
断线重连:
public class ClientReconnectTest {
public static IoSession session = null;
public static NioSocketConnector connector = null;
public static void main(String[] args) {
connector = new NioSocketConnector();
connector.setConnectTimeoutMillis(30000); // 设置连接超时
connector.getSessionConfig().setReceiveBufferSize(10240); // 设置接收缓冲区的大小
connector.getSessionConfig().setSendBufferSize(10240);// 设置输出缓冲区的大小
connector.getFilterChain().addLast("logger", new LoggingFilter());
connector.getFilterChain().addLast("codec",
new ProtocolCodecFilter(new ByteArrayCodecFactory()));// 设置编码过滤器
connector.setHandler(new ClientHandler());// 设置事件处理器
connector.setDefaultRemoteAddress(new InetSocketAddress("127.0.0.1",
8888));// 设置默认访问地址