iohao / ioGame

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

对外服访问逻辑服数据 #391

Closed wangyongzhe1993 closed 3 days ago

wangyongzhe1993 commented 2 weeks ago

大佬们,我想在对外服websocket鉴权完成时,请求所有game逻辑服进行负载均衡,给当前连接绑定一个game逻辑服。 我发现对外服没有对外暴露brokerclient的相关方法访问. 想问下是我的这种想法思路不对,还是要在启动对外服的同时在开启一个逻辑服才可以请求其他逻辑服 自己实现了功能,但是修改了源码暴露了DefaultExternalServer.setting,但是觉得太不优雅了

    DefaultExternalServer externalServer = ExternalServerApplication.EXTERNAL_SERVER;
    InvokeModuleContext invokeModuleContext = externalServer.setting.getBrokerClient().getInvokeModuleContext();
    ResponseCollectMessage responseCollectMessage = invokeModuleContext.invokeModuleCollectMessage(cmdInfo);
    List<ResponseCollectItemMessage> messageList = responseCollectMessage.getMessageList();
    for (ResponseCollectItemMessage responseCollectItemMessage : messageList) {
        IntValue data = responseCollectItemMessage.getData(IntValue.class);
        LogUtil.infoLogger.warn("playerNum:" + data.value);
    }
iohao commented 2 weeks ago

ws token 鉴权、校验建议只做简单的验证,之后统一在游戏逻辑服的 action 中做处理。

因为 webSocket token 相关验证只在 ws 连接方式下存在,而 tcp 、udp 这些连接方式是不需要这些概念的。如果把太多业务放到 verify 中,之后如果想将 ws 连接方式切换到 tcp 时,你的系统并不能得到很好的兼容。

wangyongzhe1993 commented 2 weeks ago

明白了,感谢回复