已有的项目如何向GatewayWorker中的客户端推送数据?(收到重复的两条消息)

young

使用了GatewayWorker,外部php程序需要向指定的客户端发送消息,看了手册中的方法,采用的第一种方式在外部php程序中使用Gatewayclient发送给客户端消息,但对应的客户端那边收到了重复的两条消息,不知这个是什么情况? 该怎么解决呢?

3412 4 0
4个回答

walkor

Gatewayclient没问题。
你可以在调用Gatewayclient的地方打印日志看下是不是调用了两次,比如调用了sendToAll又调用了sendToClient

  • young 2015-10-26

    我试了两个客户端连接上去,调用sendtoUid 分别向两个客户端发送消息,他们都各自收到了发向自己的两条重复的,所以应该不是我外部调用了两次。
    我看了Gatewayclient里的sendToUid,里面调用的是sendToAllGateway,这里面走的是else分支是吧,获取GLOBAL_GATEWAY_ADDRESS里的 all_address,然后发送,在这里我看了registerAddress到GLOBAL_GATEWAY_ADDRESS里的有两个重复的地址,这个是怎么添加进去的呢?

  • young 2015-10-26

    比如 当我一个客户端连接上去时 GLOBAL_GATEWAY_ADDRESS里存储的是这样的a:1:{s:14:"127.0.0.1:3001";s:14:"127.0.0.1:3001";} 这样正常吗?

walkor

那个不是重复,key和value是一样的,数据格式类似是
array(
'127.0.0.1:3001'=>'127.0.0.1:3001',
127.0.0.1:3002'=>'127.0.0.1:3002',
...
)
这样的格式。序列化后就那样

  • 暂无评论
walkor

本地测试 sendToUid sendToAll sendToUid 都不会重复
你再debug检查下吧

  • young 2015-10-27

    恩 谢谢 昨天检查了,还是没找到原因,今天我再试试

  • young 2015-10-27

    我试了下载新的gatewayworker,然后再用gatewayclient由php向gatewayworker客户端发送消息,还是会收到两条重复的数据,使用的是最新的demo代码,walkor能否帮忙看下我这个demo中为何会收到两条消息呢,我的邮箱是645599188@qq.com. 方便的话你给我发个邮件我把我的这个demo例子回发给你,可以么?

  • young 2015-10-27

    是本身使用了gatewayworker框架,就不能在外部php中再使用gatewayclient了么?

young

问题解决了,是我本地浏览器中的插件导致,刷新一次时会提交两次请求,测试demo时使用的浏览器测试的,错误的以为gatawayclient发送重复了,在此感谢walkor的提醒,gatawayclient使用没有问题。

  • 暂无评论
年代过于久远,无法发表回答
🔝