RT。 我想实现:
用户在登录成功后,给用户的所有客户端发送一条数据。(不能使用sendToClientID)
但是经过测试,发现有的时候能发送成功,有的时候不能发送成功。
猜测可能是由于joinGroup是异步操作,一旦慢了的话,会导致发送数据的时候还没有加入分组,导致数据发送失败。
请问这个能不能改成同步模式?
GatewayWorker里的接口基本上都是异步的,异步的接口不支持同步。 同一个进程里调用Gateway::joinGroup后调用Gateway::sendToGoup是能保证joinGroup先于sendToGoup执行的,因为这个操作是用队列来完成的,可以保证先后顺序。 系统负载正常的情况下,Gateway::joinGroup是可以认为是瞬间完成的,不会有感官上的延迟。
如果发送不成功,可以尝试抓包看下是否发送过去,有可能是业务逻辑bug,也有可能是客户端bug。
知道了,谢谢大神!
GatewayWorker里的接口基本上都是异步的,异步的接口不支持同步。
同一个进程里调用Gateway::joinGroup后调用Gateway::sendToGoup是能保证joinGroup先于sendToGoup执行的,因为这个操作是用队列来完成的,可以保证先后顺序。
系统负载正常的情况下,Gateway::joinGroup是可以认为是瞬间完成的,不会有感官上的延迟。
如果发送不成功,可以尝试抓包看下是否发送过去,有可能是业务逻辑bug,也有可能是客户端bug。
知道了,谢谢大神!