首页>代码>netty简单控制台聊天系统>/nettychat/src/main/java/netty/SimpleChatServerHandler.java
package netty;

import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.channel.group.ChannelGroup;
import io.netty.channel.group.DefaultChannelGroup;
import io.netty.util.concurrent.GlobalEventExecutor;

/**
 * description
 *
 * @author jack
 * @since 2018/7/31 下午1:10
 */
public class SimpleChatServerHandler extends SimpleChannelInboundHandler<String> {

    public static ChannelGroup channels = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);


    @Override
    public void handlerAdded(ChannelHandlerContext ctx) throws Exception {
        Channel channel = ctx.channel();
        channels.write("[Server]-" + channel.remoteAddress() + "加入群组");
        channels.add(channel);
    }

    @Override
    public void handlerRemoved(ChannelHandlerContext ctx) throws Exception {
        Channel channel = ctx.channel();
        channels.write("[Server]-" + channel.remoteAddress() + "断开了");
    }


    @Override
    protected void channelRead0(ChannelHandlerContext channelHandlerContext, String s) throws Exception {
        Channel incoming = channelHandlerContext.channel();
        channels.forEach(channel -> {
            if (channel != incoming) {
                channel.writeAndFlush("[" + incoming.remoteAddress() + "]" + s + "\n");
            } else {
                channel.writeAndFlush("[you]" + s + "\n");
            }
        });

    }

    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {
        Channel channel = ctx.channel();
        System.out.println("SimpleChatClient:" + channel.remoteAddress() + "在线");
    }

    @Override
    public void channelInactive(ChannelHandlerContext ctx) throws Exception { // (6)
        Channel incoming = ctx.channel();
        System.out.println("SimpleChatClient:" + incoming.remoteAddress() + "掉线");
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
        Channel incoming = ctx.channel();
        System.out.println("SimpleChatClient:" + incoming.remoteAddress() + "异常");
        // 当出现异常就关闭连接
        cause.printStackTrace();
        ctx.close();
    }
}
最近下载更多
sunlzh888888  LV29 2023年9月12日
人工智能4708  LV11 2023年5月8日
zhaoxu123123  LV10 2022年12月4日
wanglinddad  LV55 2022年6月1日
xiexiaoming05  LV14 2022年5月21日
林间听风  LV10 2022年4月12日
jaonsang  LV25 2022年4月8日
羡丶随风  LV1 2022年1月4日
卖菜老农  LV4 2021年7月12日
991899783  LV1 2020年11月23日
最近浏览更多
28128觅北  LV2 5月22日
taoyi123  LV17 4月29日
1909741473  LV8 2月19日
2890892945  LV2 2023年12月26日
3334004690  LV10 2023年10月18日
sunlzh888888  LV29 2023年9月12日
你好啊呐  LV19 2023年8月23日
一勺枣糕  LV3 2023年7月5日
人工智能4708  LV11 2023年5月8日
1475406999  LV6 2023年5月6日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友