首页>代码>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日