请问joinGroup是不是异步的?能否改成同步执行?

frontlon

RT。
我想实现:

用户在登录成功后,给用户的所有客户端发送一条数据。(不能使用sendToClientID)

但是经过测试,发现有的时候能发送成功,有的时候不能发送成功。

猜测可能是由于joinGroup是异步操作,一旦慢了的话,会导致发送数据的时候还没有加入分组,导致数据发送失败。

请问这个能不能改成同步模式?

2460 1 0
1个回答

walkor

GatewayWorker里的接口基本上都是异步的,异步的接口不支持同步。
同一个进程里调用Gateway::joinGroup后调用Gateway::sendToGoup是能保证joinGroup先于sendToGoup执行的,因为这个操作是用队列来完成的,可以保证先后顺序。
系统负载正常的情况下,Gateway::joinGroup是可以认为是瞬间完成的,不会有感官上的延迟。

如果发送不成功,可以尝试抓包看下是否发送过去,有可能是业务逻辑bug,也有可能是客户端bug。

年代过于久远,无法发表回答
🔝