【Netty聊天系统】IDEA使用Protobuf,登录传输对象的创建,让程序更快

一、引入依赖

在上一篇文章,已经其实已经引入,我这里用的是Mac环境,但是实现的思想都是一样的,直接用idea就可以生成对象。

为什么要用Protobuf这个序列化工具,因为他更快,对比json这些快很多,数据传输的占很小的空间。

对比上一篇文章,增加了build,这下面两个都是必须的,重新加载之后,就出现相应插件😊。

			这几个依赖是上一篇引用。
			<dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util -->
        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java-util</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.grpc/grpc-all -->
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-all</artifactId>
            <version>1.11.0</version>
        </dependency>


<build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>1.6.2</version>
            </extension>
        </extensions>
        <plugins>
            <plugin>
                <groupId>org.xolstice.maven.plugins</groupId>
                <artifactId>protobuf-maven-plugin</artifactId>
                <version>0.5.0</version>
                <configuration>
                    <protocArtifact>
                        com.google.protobuf:protoc:3.1.0:exe:${os.detected.classifier}
                    </protocArtifact>
                    <pluginId>grpc-java</pluginId>
                    <pluginArtifact>
                        io.grpc:protoc-gen-grpc-java:1.11.0:exe:${os.detected.classifier}
                    </pluginArtifact>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>compile-custom</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

🤗如图所示,在引入依赖的项目下,就会出现插件,当然目前还不能使用这个插件,我们还没写Protobuf的代码,我们在proto下创建一个pro文件进行编写代码。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Idhg5uY-1641634771337)(/Users/macbook/Library/Application Support/typora-user-images/image-20220108171007245.png)]

二、编写Protobuf代码

接下就是正题了,我们这里目前只写了登录需要的代码,我们后续在一步步添加代码。

Syntax 这说明是proto3版本,其他版本使用方法可以在百度看看。

package 是包名

其他都可以比作Java的对象,奇怪的是为啥message里面 有=1,=2、=3这些其实说顺序而已。

然后我们就可以用使用IDEA插件进行生成对象,生成的对象在target目录下。

syntax = "proto3";
package com.binglian;

    /*
        消息类型
    */
    enum Type {
        LOGIN_REQUEST = 0;          //  登录请求
        LOGIN_RESPONSE = 1;         //  登录响应
    }

    /*
        登录信息
    */
    message LoginRequest {
        string uid = 1;             //  用户唯一id
        string deviceId = 2;        //  设备ID
        string token = 3;           //  用户token
        uint32 platform = 4;        //  客户端平台 windows、mac、android、ios、web
    }

    /*
        登录响应
    */
    message LoginResponse {
        bool result = 1;            //  true表示发送成功,false表示发送失败
        uint32 code = 2;            //  错误码
        string message = 3;         //  错误信息
    }



    /*
        可以把理解Java的对象,这个对象下还有
        类型
        登录请求的对象
        登录响应的对象
    */
    message Message {
        Type           type = 1;                //  通用字段: 消息类型
        uint64         serial_number = 2;       //  通用字段:消息序列号
        string         session_id = 3;          //  通用字段:会话id
        LoginRequest   loginRequest = 4;        //  登录请求
        LoginResponse  loginResponse = 5;       //  登录响应
    }

生成的位置如下,就可以把对象放到我们的common下,其他模块都可以用到。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值