我们开发的微信小程序是两个人答题对战然后晋级或淘汰的。
就是两个人对战的时候会出现数据丢包的问题,造成其中一方收不到题。
微信开发平台是node.js的,问题是: 通过websocket和后台的node.js进行通讯,会出现: 1.客户端可能收不到,但服务端却认定收到了。 2.客户端收到数据时,收到的顺序是反的(服务端发a、b两次数据,客户端收到b、a)
求诸位贤达解答,若能解决问题,不胜感激,酬谢不敢免。
客户端收到后,发回一条消息告诉服务端收到了
@dislido 就像服务端和客户端微信聊天一样反复确认是吧? 一是时限比较短,二是太耗带宽。所以想着看有没更好的办法。 咨询了不少人,有的说是TCP通讯粘包拆包的问题没解决好,但是关键是不知道怎么解决,有的说是node异步通讯的逻辑没处理好,但也是不知道怎么解决。唉。。。
发消息走http,收消息走websocket, 。socket.io有消息回调,即发送后有个回调函数来确认接收方结果
来自酷炫的 CNodeMD
我记得websocket处理过粘包啊
@suckmoney 客户端只有返回确认报文才能肯定包送达啊;包顺序反的问题你确定你发送的顺序是对的,建议你通过 抓包 来分析一下是客户端问题还是服务端问题
From Noder
@JustinLiao1314 打印过日志,确定发送的顺序是对的。 现在怀疑是TCP通讯产生的粘包造成的无法正确解析和拆包造成的识别顺序的问题,正在各种调试。如果有这门类的大神就好了。 非常感谢提供意见。
@243011068 兄台,确定微信开发者的SDK里已经有解决粘包的方式吗?能否进一步说明?费心了,非常感谢。
@yinxin630 具体业务场景就是两个用户答题实时对战,服务端给双方发同一题,双方在限时内选择答案进行答题。和头脑王者有点类似。 非常感谢
@zswnew 先试试看 感谢帮助