欢迎光临散文网 会员登陆 & 注册

日麻折腾笔记Java篇(5)-雀魂的websocket协议

2020-11-16 00:40 作者:天羽ちよこ  | 我要投稿

近况

雀魂浏览器和服务端虽然也是通过websocket交互的但是它的数据是用的谷歌家的protobuf,最近一直在研究protobuf,耽搁了不少时间。

参考

从chrome开发者工具里可以看到雀魂加载了一个liqi.json的protobuf的描述文件,不过谷歌官方压根没有提供json描述文件的支持,谷歌一下发现是一个叫protobuf.js的第三方库提供的支持,且其只有js版本没有其他语言版本,怎么办。。。

从github上面其他仓库的描述来看,以前版本的雀魂有提供.proto格式的描述文件,现在已经下载不到了(?),还好github上面有小伙伴有.proto文件,于是下下来,通过proto程序转成java文件,好家伙,生成了953个java文件:


数据解析

从websocket中拿到二进制数据(byte数组)后,还需要对其截取才能成功解出来数据,其客户端发送的请求与服务端响应要截取的长度不同,大部分请求是3,响应是1,我为了图方便直接乱写一通:

typeUrl包含了具体的数据类型,需要自己判断并将其转为protobuf生成的类,如下所示:

这里没有什么好说的,各种类型判断的体力活儿,我并没有实现多复杂的功能,和天凤一样只定义了初始化、摸牌、打牌等几种事件,实际用起来是下面这个样子:

好像向听数判断在某些极端情况下还是不太对劲,等有时间再修了。

后续

昨天打了一把雀魂,东一w立七对都被下家给胡了过去,东二接到领导电话开始查线上的故障,我直接退出游戏了,又是一个四位,非常难受。


up要去搬砖赚钱,等有空再来整日麻相关的代码了。

日麻折腾笔记Java篇(5)-雀魂的websocket协议的评论 (共 条)

分享到微博请遵守国家法律