目前在做一个项目的前期测试,打算采用websocket通讯。在web平台表现尚可。但在模拟器上出现了问题。
如果数据包较大>1024发现会出现拼包错乱的问题(会把两个包的数据和并到一个回调里面通知,导致我游戏层解析数据的时候发生错误,目前数据采用明文json格式发送)。
因为不太了解websocket,根据网上的普遍做法我在onmessage里面没有做拼包,认为凡是onmessage回调应该就是一个完整的数据包了。这个貌似在web平台上是这个样子。但是到了模拟器上就出现>1024会和后面的数据合并回调。
日志如下:
Simulator : NOTICE: instantiating client ext permessage-deflate
Simulator : Safely done, msg(1)!
Simulator : msg(1) append: 0 + 228 = 228
Simulator : msg(1) was totally sent!
Simulator : -----------------------------------------------------------
Simulator : Receiving data:index:1, len=30
Simulator : Notify data len 30 to Cocos thread.
Simulator : Safely done, msg(2)!
Simulator : msg(2) append: 0 + 1284 = 1284
Simulator : msg(2) was totally sent!
Simulator : -----------------------------------------------------------
Simulator : Receiving data:index:2, len=1023
Simulator : Receiving data:index:3, len=689
Simulator : Receiving data:index:4, len=1023
Simulator : ERR: lws_rx_sm: doing draining flow
Simulator :
Simulator : Receiving data:index:5, len=1023
Simulator : Receiving data:index:6, len=1023
Simulator : Receiving data:index:7, len=1023
Simulator : Receiving data:index:8, len=216
Simulator : Notify data len 1712 to Cocos thread.
Simulator : Notify data len 4308 to Cocos thread.
Simulator : 20846:SyntaxError: JSON.parse: bad Unicode escape at line 1 column 1018 of the JSON data
_ at a (F:\GitHub\TTGamePlaza\library\bundle.project.js?009:NaN:0)_