websocket 原生平台消息长度有误的问题

  • Creator 版本:2.3.0

  • 目标平台: Web一切正常,但是原生ios 模拟器 都不行

  • 详细报错信息,包含调用堆栈:下面截图详细解释

  • 重现方式:使用websocket发送保函0x0000的语句就会出现长度有误的问题

  • 之前哪个版本是正常的 :没有版本是正常的

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :mac

  • 编辑器之前是否有其它报错 :无报错,只是收到消息和服务器发的不一致

  • 出现概率:100%

  • 额外线索:

截图1

截图2

使用websocket发送第一张截图的string(里面包含了12个byte)给客户端,web一切正常
,发多少收到多少(使用的浏览器是Chrome),
但是到了原生平台,明明发了12个Byte,但是js代码只收到了2个byte,不知道问题在哪,所以去coco2d/network/Websocket-apple.mm里断点打印,发现了问题,请看第二张截图,
2个红色箭头是系统收到websocket的消息长度,但是转换到cocos2d后,发现消息长度和消息内容都变短了(2个黄色箭头),最后的绿色箭头是js里面收到的消息和长度,小弟无才,不知道如何解决,请求大大们能都帮帮忙,谢谢:sob:

:sweat:

服务器发送了12byte的消息,web可以收到12个byte,但是原生ios只收到了2byte

std::string message = [string UTF8String];
这句转换后的message,已经只有2byte的长度了
12byte的数据转换就变成了2byte了
哪位大神有办法解决下吗,跪求

换成utf8,其它编码估计没做处理,web实现更完整

换成UFT8,原本byte里面的0和1的数据就变了,和原本发送的消息不一致

你看一下你发送的是string还是二进制

把2进制换成string发的,在web收到消息一切正常,也能通过string读出原来的二进制

不能这么操作的,你还是打印收到的二进制长度吧