iohao / ioGame

无锁异步化、事件驱动架构设计的 java netty 网络编程框架; 轻量级,无需依赖任何第三方中间件或数据库就能支持集群、分布式; 适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景; 通过 ioGame 你可以很容易的搭建出一个集群无中心节点、集群自动化、分布式的网络服务器;FXGL、Unity、UE、Cocos Creator、Godot、Netty、Protobuf、webSocket、tcp、socket;java Netty 游戏服务器框架;

Home Page:http://game.iohao.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

游戏对外服 - 自定义编解码 - WebSocketMicroBootstrapFlow

iohao opened this issue · comments

游戏对外服支持自定义统一交互协议 see #213

这里介绍 WebSocketMicroBootstrapFlow 相关的编解码自定义。

方法一,通过重写 pipelineCodec

重写 WebSocketMicroBootstrapFlow pipelineCodec 方法,这种方式最灵活,可完全自定义。

DefaultExternalServerBuilder builder = ...;

builder.setting().setMicroBootstrapFlow(new WebSocketMicroBootstrapFlow() {
    @Override
    public void pipelineCodec(PipelineContext context) {
        ... 省略部分代码

        // websocket 编解码
        var externalCodec = new YourExternalCodec();
        context.addLast("codec", externalCodec);
    }
});

方法二,通过重写 createExternalCodec 方法

WebSocketMicroBootstrapFlow 新增 createExternalCodec 方法,用于创建开发者自定义的编解码;其他配置则使用 pipelineCodec 中的默认配置。

DefaultExternalServerBuilder builder = ...;

builder.setting().setMicroBootstrapFlow(new WebSocketMicroBootstrapFlow() {
    @Override
    protected MessageToMessageCodec<BinaryWebSocketFrame, BarMessage> createExternalCodec() {
        return new YourExternalCodec();
    }
});