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

逻辑服监听机制

iohao opened this issue · comments

新增逻辑服监听机制

逻辑服指的是游戏对外服和游戏逻辑服

  1. 监听其他逻辑服上线、下线,并得到该逻辑服的信息
  2. 逻辑服在连接到 Broker(游戏网关)之前的监听

使用示例

public class HelloLogicServer extends AbstractBrokerClientStartup {
    ... ...省略部分代码
    @Override
    public BrokerClientBuilder createBrokerClientBuilder() {
        BrokerClientBuilder builder = BrokerClient.newBuilder();
        builder.appName("Hello 逻辑服");

        builder.addListener(new BrokerClientListener() {
            @Override
            public void registerBefore(BrokerClientModuleMessage moduleMessage, BrokerClient client) {
                // 添加自定义属性
                moduleMessage.addHeader("myData", "hello");
            }

            @Override
            public void onlineExternal(BrokerClientModuleMessage otherModuleMessage, BrokerClient client) {
                // 其他游戏对外服上线监听。已经在线上的,或者有新上线的游戏对外服都会触发此方法。
                log.info("{}", otherModuleMessage);
            }

            @Override
            public void offlineExternal(BrokerClientModuleMessage otherModuleMessage, BrokerClient client) {
                // 其他游戏对外服下线监听
                log.info("{}", otherModuleMessage);
            }

            @Override
            public void onlineLogic(BrokerClientModuleMessage otherModuleMessage, BrokerClient client) {
                // 其他游戏逻辑服在线监听。已经在线上的,或者有新上线的游戏逻辑服都会触发此方法
                log.info("{}", otherModuleMessage);
            }

            @Override
            public void offlineLogic(BrokerClientModuleMessage otherModuleMessage, BrokerClient client) {
                // 其他游戏逻辑服下线监听
                log.info("{}", otherModuleMessage);
            }
        });

        return builder;
    }
}