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

服务刚启动调用对外服的工具ExternalCommunicationKit报错

chenmaochang opened this issue · comments

你的问题

单服应用,服务刚启动
image

接着收到一条连接请求,然后调用了ExternalCommunicationKit.existUser方法,
结果报了个Cannot invoke "com.iohao.game.bolt.broker.core.client.BrokerClient.getCommunicationAggregationContext()" because "com.iohao.game.bolt.broker.core.client.BrokerClientHelper.brokerClient" is null 的错

如果起服后等待一会再连的话则不会

版本

  • ioGame version: 17.1.59

可以提供一个复现 demo 吗

bugdemo.zip
做了一个会报错的demo,数据库连接信息使用的是mongodb atlas的教学链接,无泄漏风险,实测去掉mongodb相关依赖则不会报错

可以提供一个复现步骤吗,项目打开后有错误。

image

可以提供一个复现步骤吗,项目打开后有错误。

image

看看是不是idea默认的java版本不兼容
,这个demo里没有业务的,就是Test.java在启动时有个@PostConstruct,里面调用了广播,然后就会报错,如果项目启动慢的话,打印了ioGame的banner后可能要等三四十秒后才能正常调用

这是正常的,因为游戏服务器是异步启动的。

服务器还没启动完成,就调用了广播方法;可以尝试延迟一些时间,等相关服务器启动完成在调用广播相关方法。

老哥,这下遇到问题了,服务器还没启动完成,但是对外服却开放了端口连接,服务没启动完就可以有请求进来,甚至调用了一些领域事件,最终导致项目启动不完整

不要使用 NettyRunOne 启动;可以尝试等逻辑服启动完成后,再启动游戏对外服。