windows 1.7版本websocket发送包长度有问题.

chrome gdb可以看到发送的长度应该是12:

而服务器解析的结果:

使用过去版本的cocos是ok的(长度略有不同是因为数据中有不一样长度的名字).

我又尝试了发送字符串长度是ok的, 但是Uint8Array貌似就会有问题.
继续尝试直接发Uint8Array也是ok的, 貌似不一定是websocket的问题, 我去检查一下protobuf生成的Uint8Array有没有问题.

是jsb还是web啊?

encode(msg).finish()返回的是啥?
最好提供一下测试代码。

是jsb
finish()返回的就是Uint8Array.

发现再new一个Uint8Array就可以了, 原因不知道.
图一, 会出现错误的写法.

图二, OK的写法, 加个new Uint8Array.

另外还发现, protobuf.js的message检查貌似也失效了.
过去如果required的field没填的话会有异常.
现在没有异常, 有问题的协议会发出去…
我用的是protobuf.js 6.70

不知道js引擎的更新怎么会造成这种现象. 我再看看吧.

请跟1.6.1对比一下,看看是否正常。
1.7替换v8作为windows上的底层的脚本引擎。不知道是否存在与之前SpiderMonkey的差异。
如果你发现1.6.1是正常的,麻烦精简出一个能重现问题的demo发给我。谢谢。

生成绑定的时候还是spidermonkey, 没关系吧?

这个没事

finsh本身返回的就是Uint8Array吧。
我用的1.61,protobufjs 6.8,web是正常的,没有长度问题

另外请问下, jsb,的 protobufjs要怎么改,才能在手机运行,可以上传下改过的protobuf代码吗,我被这问题困扰好久了,拜托

1;6.1的jsb正常么?
可以提交一个demo出来。

把protobuf.js和它需要的long.js放到一起导入为插件就可以了. 之前还需要改改protobuf.js的代码, 昨天试了1.7和protobuf.js 6.8, 貌似不需要改直接可以用.

1赞

换了1.7,jsb运行还是黑屏ts2.zip (728.1 KB)

我换了1.7 还是不行

var $protobuf = require(“protobufjs/minimal”);
这个相关的文件在工程里面么?我看日志,是require这个模块出错了啊。

希望官方可以搞个 protobufjs的范例?这种主流库应该支持一下啊。
发帖子问了好久了,说来说去也说不清楚。折腾很久了。
1.61和1.7都没报错。jsb可以打包,但是运行黑屏

关注一下 @zxh19821 的微信公众号。