WebSocket接受信息是流式的么 OnMessage响应的时候接受到的大小是多少

WebSocket接受信息是流式的么?每次OnMessage响应的时候,接受到的evevnt.data的大小是多少?能设置接收包的大小么?我是用protobuf。
c++的话,我是在protobuf序列化出来的数据前面加上msgID和msgSize,然后根据这两值去读固定大小的msg。请问在js和ccc中websocket是怎么做类似处理的?谢谢

另外,用google官方的js子目录下的办法 和 protobuf.js有什么区别么?各自有哪些优势,包括ccc中对微信,android,ios各平台的使用。谢谢

  1. 不是流,是数据包了。大小得看对方发的是多大。
  2. 约定好msgid和msgsize的长度,取包之后用new Uint32Array之类的先按照约定取出msgid和size。
  3. 反正我是用protobuf.js。

ok,谢谢,那就是服务器send一次,客户端就收到一次执行一次OnMessage?

嗯嗯,大侠用过google官方的js子目录的办法么,我开始也看的是protobufjs,后来看到一个帖子说效率比官方的办法在native平台要低些,虽然官方的办法在native下也会低。。

对了,protobufjs的话您是动态加载,还是用他那么命令行工具先生成js然后静态加载?谷歌官方的是生成js静态加载,之前在c++下也是这么使用的。所以也不算麻烦。而且静态加载应该是比动态加载效率高些。但是就是不知道静态加载在微信上时候会不会超过4M,看帖子微信只允许4M。。我是习惯把所有msg写在一个proto文件里。

这个你打印一下不就知道了。。。
先做完功能,再考虑效率。自己撸的代码对效率的影响远大于这种库带来的差别。
或者想想,真的这些性能差异会影响到你的产品吗?客户端又不是服务器。
东西快做完了,测试的时候发现性能问题再改也不迟,这种库换起来很方便的。

我是js,会超过4M,我刚刚看了下我现在的协议文件已经6.7M了。但是我这个是很大的游戏,协议很多。
你可以自己尝试着做一些满足条件的协议看一下大小。
我还是那句话,不用思前顾后,先把东西做出来再来专心做优化。

ok哈哈,您用protobufjs也是静态加载啊,多谢建议!

多谢多谢

c++里用asio,beast做的时候是在protobuf序列化的data前面加两个int分别代表msgID和msgDataSize,然后根据这个size再去async_read。那么现在其实msgDataSize对websocket来说没用了,只需要在message函数里把msgID取出来用对应的protobugMsg去decode收到的event.data就行了。难怪看到有个帖子把MsgType作为proto里每个msg的第一个字段。。c++里我是把两个int在protobuf序列化之后加在最前面的。。

对了,那这么说的话,websocket不用考虑拆包,连包,粘包等这些问题?