[Netty实践] 简单聊天实现(一):基础部分

目录

一、简介

二、结构

三、依赖

四、消息设计

五、序列化工具实现

六、编解码器实现

七、后续文章


一、简介

本章主要通过netty实现一个简单的聊天功能,主要分为三块:登录、单聊以及群聊功能,上诉功能会做的比较粗略,主打的就是一个学习,更完善的功能需要自行深入了解以及修改,也希望通过这个章节实践,能够给大家帮助。

该章节主要分为三部分,同时也是分为三篇博客:

第一部分,主要涉及服务端与客户端之间通信的消息设计,以及消息序列化相关实现

第二部分,主要涉及服务端的实现,主要包括服务端的创建、channel管理、组管理、对应各种Handler实现。

第三部分,主要涉及客户端的实现,主要包括客户端的创建、登录、单聊、群聊消息发送。

本篇博客,实现的是第一部分(基础部分)

二、结构

三、依赖

其他模块也一样

<dependencies>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.101.Final</version>
        </dependency>

        <dependency>
            <groupId>io.protostuff</groupId>
            <artifactId>protostuff-core</artifactId>
            <version>1.8.0</version>
        </dependency>

        <dependency>
            <groupId>io.protostuff</groupId>
            <artifactId>protostuff-runtime</artifactId>
            <version>1.8.0</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.30</version>
        </dependency>

    </dependencies>

四、消息设计

由于我们的聊天主要有以下三个功能:

登录,需要记录用户名对应的Channel

单聊,需要向对方用户发送消息

群聊,需要向群组发送消息

而以Request结尾的类是由客户端进行发送,服务端进行接收处理的。Response结尾的类是由服务端进行发送,客户端进行接收处理的。

继承了Message类的所有Request和Response,就是服务端与客户端之间交互的数据结构。

1、Message类,所有Request和Response类的父类,最关键的字段就是messageType,子类继承之后进行赋值,该值与类的类型进行绑定,用于byte字节数组反序列化时能够获取到需要反序列化的类型。

public abstract class Message {

    /**
     * 用于记录消息类型,序列化与反序列化时时候,用于找到指定类型
     */
    protected Byte messageType;

    /**
     * 发送时间
     */
    protected Date sendDate;

    public Message() {
        this.sendDate = new Date();
    }

}

2、LoginReque

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值