使用了GatewayWorker,外部php程序需要向指定的客戶端發(fā)送消息,看了手冊(cè)中的方法,采用的第一種方式在外部php程序中使用Gatewayclient發(fā)送給客戶端消息,但對(duì)應(yīng)的客戶端那邊收到了重復(fù)的兩條消息,不知這個(gè)是什么情況? 該怎么解決呢?
Gatewayclient沒(méi)問(wèn)題。
你可以在調(diào)用Gatewayclient的地方打印日志看下是不是調(diào)用了兩次,比如調(diào)用了sendToAll又調(diào)用了sendToClient
我試了兩個(gè)客戶端連接上去,調(diào)用sendtoUid 分別向兩個(gè)客戶端發(fā)送消息,他們都各自收到了發(fā)向自己的兩條重復(fù)的,所以應(yīng)該不是我外部調(diào)用了兩次。
我看了Gatewayclient里的sendToUid,里面調(diào)用的是sendToAllGateway,這里面走的是else分支是吧,獲取GLOBAL_GATEWAY_ADDRESS里的 all_address,然后發(fā)送,在這里我看了registerAddress到GLOBAL_GATEWAY_ADDRESS里的有兩個(gè)重復(fù)的地址,這個(gè)是怎么添加進(jìn)去的呢?
比如 當(dāng)我一個(gè)客戶端連接上去時(shí) GLOBAL_GATEWAY_ADDRESS里存儲(chǔ)的是這樣的a:1:{s:14:"127.0.0.1:3001";s:14:"127.0.0.1:3001";} 這樣正常嗎?
本地測(cè)試 sendToUid sendToAll sendToUid 都不會(huì)重復(fù)
你再debug檢查下吧
我試了下載新的gatewayworker,然后再用gatewayclient由php向gatewayworker客戶端發(fā)送消息,還是會(huì)收到兩條重復(fù)的數(shù)據(jù),使用的是最新的demo代碼,walkor能否幫忙看下我這個(gè)demo中為何會(huì)收到兩條消息呢,我的郵箱是645599188@qq.com. 方便的話你給我發(fā)個(gè)郵件我把我的這個(gè)demo例子回發(fā)給你,可以么?
問(wèn)題解決了,是我本地瀏覽器中的插件導(dǎo)致,刷新一次時(shí)會(huì)提交兩次請(qǐng)求,測(cè)試demo時(shí)使用的瀏覽器測(cè)試的,錯(cuò)誤的以為gatawayclient發(fā)送重復(fù)了,在此感謝walkor的提醒,gatawayclient使用沒(méi)有問(wèn)題。