cocos creator protobuf 微信小程序遇到的坑

在cocos creator的开发中,经常需要使用websocket,进行长连接和服务器进行通信。常见的游戏有一般的棋牌,斗地主,跑得快等。
使用了一个封装了websocket的框架很长时间,一直都没有出过问题。不管是心跳,消息注册,消息的派发都没有问题。
一直以来发布的平台是打包app,Android平台,IOS平台,或者其他H5平台。直到昨天发布微信小程序平台。出现了问题。

遇到的问题

打包发布微信小程序后,模拟器上调试一直没有问题,知道发布预览版本,websocket连接上之后,发送的信息,服务器一直收不到。不知道怎么回事。从昨天下午,一直折腾到晚上。都没有解决,上网上各种查看资料。都没有解决。
直到遇到一个同事说:微信小程序的webscoket只支持string 和 arraybuffer。才发现问题。我这里websockeet发送出去的是Uint8Array。

同时网上也找到了同样的说法 https://blog.csdn.net/qq_31754591/article/details/130995991

解决办法

将微信小程序 websocket发送的地方将Uint8Array格式化为ArrayBuff就可以了。至此问题解决。

  1. let sendData: Uint8Array = common.PackageMessage.encode(sp).finish();
  2. this.socket.send(sendData);

修改为:

  1. let sendData: Uint8Array = common.PackageMessage.encode(sp).finish();
  2. //解决问题的一句 将Uint8Array格式的数据格式化为 ArrayBuffer就可以了。
  3. let sendBuff = sendData.buffer.slice( sendData.byteOffset,sendData.byteLength + sendData.byteOffset);
  4. this.socket.send(sendBuff);

本身从事上位及开发,主要使用技术wpf,C# winform。

联系方式

Tel:17320170935(微信同号-添加请备注微见-protobuf 微信小程序)
QQ:472198980 (添加请备注 微见-protobuf 微信小程序)

2024-04-30 15:29:41  user 阅读(211) 评论(0) 标签:cocos creator,protobuf,微信小程序,websocket,发送数据不成功 分类:cocos creator