gaochundong/Cowboy

client端的OnServerDataReceived无法异步执行接收到的数据

try3 opened this issue · 4 comments

try3 commented

服务端快速发送数据到客户端
qq 20170309182051

客户端接收到数据后无法异步处理,是哪里不对吗?
qq 20170309182252

报的错是说解析出错吗?

收到消息转移到新的线程执行的设计是可以的,但需要先将 data 中的数据复制到局部变量的数组中,由于 Task.Run 并不会立即消费该数据,方法返回后,可能等消费的时候数据已经改变了。

try3 commented

没有报错。测试代码的需求是:
服务端发送100个数据到客户端,客户端收到100个数据后,可能处理时间有长短,回复给服务端时应该按哪个先处理完成,就先回复给服务端,但现在处理的结果是按接收到次序回复给服务端的,也就是1-100这样的次序,应该是哪个先处理完成就回复给服务端。
然而使用异步方法后(实现是上面的第2张图),还是同步执行了。是我的异步实现有问题?还是其他问题呢?

qq 20170310111620

await Task.Run 异步语义但在此环境下是个同步语法,尝试将 await 去掉试下。

try3 commented

把cowboy里await去掉可以,但这个会不会影响其它?
之前我是在外面再包装了一层(await去掉)