找回密码
 立即注册
查看: 253|回复: 0

protobufjs简单使用

[复制链接]
发表于 2022-6-8 14:24 | 显示全部楼层 |阅读模式
补充一下上一篇随笔 https://www.jianshu.com/p/563251694182 的一点内容:一定要用google.golang.org/protobuf/proto全部替换github.com/gogo/protobuf/proto,假如不替换,是服务正常解析protobuf的。

protobufjs(https://github.com/protobufjs/protobuf.js)可以让我们再浏览器中使用protobuf,下面的例子是如何在普通页面中,直接使用protobufjs。

全局安装protobufjs,使用pbjs直接生成proto文件对应的js protobuf描述文件,这样就可以在普通页面中直接使用了。
var root = protobuf.Root.fromJSON({    "nested": {        "protocol": {            "options": {                "go_package": "/protocol"            },            "nested": {                "Message": {                    "fields": {                        "fromUsername": {                            "type": "string",                            "id": 1                        },                        "from": {                            "type": "string",                            "id": 2                        },                        "to": {                            "type": "string",                            "id": 3                        },                        "content": {                            "type": "string",                            "id": 4                        },                        "contentType": {                            "type": "int32",                            "id": 5                        },                        "type": {                            "type": "string",                            "id": 6                        },                        "messageType": {                            "type": "int32",                            "id": 7                        },                        "fileKey": {                            "type": "string",                            "id": 8                        },                        "fileSuffix": {                            "type": "string",                            "id": 9                        },                        "file": {                            "type": "bytes",                            "id": 10                        }                    }                }            }        }    }});let messageProto = root.lookup("protocol.Message")let reader = new FileReader();reader.readAsArrayBuffer(message.data);reader.onload = ((event) => {    let messagePB = messageProto.decode(new Uint8Array(event.target.result))})
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-26 18:29 , Processed in 0.089926 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表