Apache Mina 2.x 简易入门解析(四)

2014-11-24 09:10:04 · 作者: · 浏览: 16
toString();
DateFormat format = new SimpleDateFormat("yyyy-MM-dd H:m:s");
String dateStr = format.format(new Date());

logger.info(messageStr + "\t" + dateStr);

Collection sessions = session.getService().getManagedSessions().values();
for(IoSession tempSession : sessions){
tempSession.write(messageStr + "\t" + dateStr);
}
}

@Override
public void messageSent(IoSession session, Object message) throws Exception {
// TODO Auto-generated method stub
logger.info("服务器成功发送信息: " + message.toString());
}

@Override
public void sessionClosed(IoSession session) throws Exception {
// TODO Auto-generated method stub
logger.info("there is a session closed");
CloseFuture future = session.close(true);
future.addListener(new IoFutureListener(){
public void operationComplete(IoFuture future){
if(future instanceof CloseFuture){
((CloseFuture)future).setClosed();
logger.info("have do the future set to closed");
}
}
});
}

@Override
public void sessionCreated(IoSession session) throws Exception {
// TODO Auto-generated method stub
logger.info("there is a session created");
session.write("welcome to the chat room");
}

@Override
public void sessionIdle(IoSession session, IdleStatus arg1) throws Exception {
// TODO Auto-generated method stub
logger.info(session.getId() + "(SesssionID) is idle in the satate-->" + arg1);
}

@Override
public void sessionOpened(IoSession arg0) throws Exception {
// TODO Auto-generated method stub

}


}
    2).建立Acceptor ,同时也充当Server端的启动类 (SimpleMinaServer)

package com.mai.mina.diyChat;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;

import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.LineDelimiter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LogLevel;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

public class SimpleMinaServer {

SocketAcceptor acceptor = null;

SimpleMinaServer(){
acceptor = new NioSocketAcceptor();
}

public boolean bind(){
acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(
new MyTextLineCodecFactory()); //配置CodecFactory
LoggingFilter log = new LoggingFilter();
log.setMessageReceivedLogLevel(LogLevel.INFO);
acceptor.getFilterChain().addLast("logger", log);
acceptor.setHandler(new MyServerHandleDemo1());  //配置handler
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 30);

try {
acceptor.bind(new InetSocketAddress(8888));
return true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}

}

p