hprose/hprose-golang

client.Subscribe 触发server OnSubscribe事件的时间要比client.Subscribe之后的远程调用晚。

OliverZou opened this issue · 6 comments

本来client.Subscribe 之后调用其他client.remotecallXXXX,本来期望这个过程是同步的,即client.Subscribe返回后调用client.remotecallXXXX。在client.remotecallXXXX时触发服务器的 OnSubscribe事件,做好相应处理,才能保证之后的client.remotecallXXXX正确调用。但目前这点无法保证。

又翻开代码看了看,看起来应该不是hprose的问题。我先确认一下我的代码。

反复调用多次,不是每次的顺序都一样。服务器端有时候是先到remotecallXXXX 然后才是fireSubscribeEvent,有时候反过来。目前看不出是hprose的代码问题还是我的代码问题。

1
2
客户端的同步调用次序是先两个client.Subscribe ,然后才是UDS_Claim
这两张图中的log记录(调试也一样)显示他们并不同步

原因:base_client.go 中使用了go client.subscribe(name, id, settings),造成异步访问

andot commented

2.0 版本的推送在设计上不完美。3.0 已经把推送部分重写了。不过 go 版本的 hprose 3.0 目前还没开始做。所以,2.0 的这个功能暂时先别用了。等 golang 2.0 + hprose 3.0 吧 😂

andot commented

3.0 已发布。