RT。
我想實(shí)現(xiàn):
用戶在登錄成功后,給用戶的所有客戶端發(fā)送一條數(shù)據(jù)。(不能使用sendToClientID)
但是經(jīng)過測(cè)試,發(fā)現(xiàn)有的時(shí)候能發(fā)送成功,有的時(shí)候不能發(fā)送成功。
猜測(cè)可能是由于joinGroup是異步操作,一旦慢了的話,會(huì)導(dǎo)致發(fā)送數(shù)據(jù)的時(shí)候還沒有加入分組,導(dǎo)致數(shù)據(jù)發(fā)送失敗。
請(qǐng)問這個(gè)能不能改成同步模式?
GatewayWorker里的接口基本上都是異步的,異步的接口不支持同步。
同一個(gè)進(jìn)程里調(diào)用Gateway::joinGroup后調(diào)用Gateway::sendToGoup是能保證joinGroup先于sendToGoup執(zhí)行的,因?yàn)檫@個(gè)操作是用隊(duì)列來完成的,可以保證先后順序。
系統(tǒng)負(fù)載正常的情況下,Gateway::joinGroup是可以認(rèn)為是瞬間完成的,不會(huì)有感官上的延遲。
如果發(fā)送不成功,可以嘗試抓包看下是否發(fā)送過去,有可能是業(yè)務(wù)邏輯bug,也有可能是客戶端bug。