首页>代码>apache Mina开发实现多人聊天室程序命令行版本>/zuidaima_mina_server/src/main/java/com/zuidaima/mina/server/message/ServerMessageHandler.java
package com.zuidaima.mina.server.message;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import org.apache.mina.core.future.CloseFuture;
import org.apache.mina.core.future.IoFuture;
import org.apache.mina.core.future.IoFutureListener;
import org.apache.mina.core.service.IoHandler;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* <b>function:</b> 处理服务器端消息
*
* @author hoojo
* @createDate 2012-6-26 下午01:12:34
* @file ServerMessageHandler.java
* @package com.hoo.mina.server.message
* @project ApacheMiNa
* @blog http://blog.csdn.net/IBM_hoojo
* @email hoojo_@126.com
* @version 1.0
*/
public class ServerMessageHandler implements IoHandler {
private final static Logger log = LoggerFactory
.getLogger(ServerMessageHandler.class);
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
log.info("服务器发生异常: {}", cause.getMessage());
}
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
log.info("服务器接收到数据: {}", message);
String content = message.toString();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String datetime = sdf.format(new Date());
log.info("转发 messageReceived: " + datetime + "\t" + content);
// 拿到所有的客户端Session
Collection<IoSession> sessions = session.getService()
.getManagedSessions().values();
// 向所有客户端发送数据
for (IoSession sess : sessions) {
sess.write(datetime + "\t" + content);
}
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
log.info("服务器发送消息: {}", message);
}
@Override
public void sessionClosed(IoSession session) throws Exception {
log.info("关闭当前session:{}#{}", session.getId(),
session.getRemoteAddress());
CloseFuture closeFuture = session.close(true);
closeFuture.addListener(new IoFutureListener<IoFuture>() {
public void operationComplete(IoFuture future) {
if (future instanceof CloseFuture) {
((CloseFuture) future).setClosed();
log.info("sessionClosed CloseFuture setClosed-->{},",
future.getSession().getId());
}
}
});
}
@Override
public void sessionCreated(IoSession session) throws Exception {
log.info("创建一个新连接:{}", session.getRemoteAddress());
session.write("welcome to the chat room !");
}
@Override
public void sessionIdle(IoSession session, IdleStatus status)
throws Exception {
log.info("当前连接{}处于空闲状态:{}", session.getRemoteAddress(), status);
}
@Override
public void sessionOpened(IoSession session) throws Exception {
log.info("打开一个session:{}#{}", session.getId(),
session.getBothIdleCount());
}
}
最近下载更多
crosa_Don LV18
2022年7月23日
LHJ123 LV30
2019年2月1日
wen332 LV6
2019年1月4日
253702090 LV3
2018年5月19日
jic499 LV27
2018年4月14日
1943815081 LV13
2018年4月13日
lyh1989 LV34
2017年12月7日
fangjishuai LV2
2017年11月30日
dagf113225 LV68
2017年8月30日
xjc621105 LV17
2017年4月25日

最近浏览