package org.example;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;

/**
 * 多人聊天客户端处理器。
 * <p>
 * 该类继承自Netty的SimpleChannelInboundHandler,专门用于处理String类型的消息。
 * 它负责接收服务端发送的消息并将其打印到控制台,同时还包含了异常处理逻辑,
 * 以确保在网络连接出现问题时能够及时关闭连接。
 */
public class MultiChatClientHandler extends SimpleChannelInboundHandler<String> {
    /**
     * 处理接收到的消息。
     * <p>
     * 当客户端接收到来自服务端的字符串消息时,该方法会被触发。
     * 它会将接收到的消息打印到控制台,以便用户查看。
     *
     * @param ctx ChannelHandlerContext对象,代表客户端与服务端之间的连接上下文
     * @param msg 接收到的字符串消息
     * @throws Exception 处理消息过程中可能抛出的异常
     */
    @Override
    protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception {
        System.out.println(msg); // 打印接收到的消息
    }

    /**
     * 处理网络连接异常。
     * <p>
     * 当客户端与服务端之间的连接出现异常时,该方法会被触发。
     * 它会打印异常信息到控制台,并关闭连接,释放资源。
     *
     * @param ctx ChannelHandlerContext对象,代表客户端与服务端之间的连接上下文
     * @param cause 导致异常的原因
     * @throws Exception 处理异常过程中可能抛出的异常
     */
    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        cause.printStackTrace();
        ctx.close();
    }
}
Netty多人聊天客户端处理器:深入解析MultiChatClientHandler

原文地址: https://www.cveoy.top/t/topic/f3A6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录