首先下载protobuf.exe

下载地址:https://download.csdn.net/download/qq_34756156/10220137

MessageBody.proto
syntax = "proto3";

message messagebody{
//工厂 3G
string factory = ; //设备id 3918173069
string deviceId = ; //内容长度的长度 消息类型+消息主体 = 内容长度
string length = ; //消息类型
string type = ; //消息主体
string body = ; //时间戳
string timeStamp = ; //发送人
string sender = ; //接收人
string receiver = ; //用户组编号
string groupId =;
}
 

编译解释:

工具编译 protoc.exe --java_out=编译的路径 源

java编译
F:\工具\portobuf>protoc.exe --java_out=F:\工具\portobuf\ SubscribeReq.proto js编译 F:\工具\portobuf>protoc.exe --js_out=import_style=commonjs,binary:. js\MessageBody.proto node.js编译 npm install -g require(对库文件的引用库)
npm install -g browserify(这个是用来打包成前端使用的js文件)
最后我们执行
npm install google-protobuf
会在当前目录下生成一个文件夹,里面装的就是protobuf的库文件。 都装好以后,只需要再写一个导出文件用browserify执行打包即可 var MessageBody = require('./MessageBody_pb'); module.exports = {
DataProto: MessageBody
} 保存为exports.js。 .对文件进行编译打包
执行命令
browserify exports.js > MessageBody.js
然后会生成一个MessageBody.js文件。 引入js使用
<script type="text/javascript" src="./MessageBody.js"></script>
socket = new WebSocket("ws://localhost:8111/websocket"); socket.binaryType = "arraybuffer";
if (event.data instanceof ArrayBuffer){
proto.messagebody.deserializeBinary(event.data); //如果后端发送的是二进制帧(protobuf)会收到前面定义的类型
} var content = new proto.messagebody();
content.setFactory("3G");//厂商
content.setDeviceid(deviceid);//设备id
content.setLength("");//长度
content.setType(message);//类型
content.setBody("0,150,56");//内容
var bytes = content.serializeBinary();

protobuf 编译 java js文件详解的更多相关文章

  1. Java Class文件详解

    作者:禅楼望月(http://www.cnblogs.com/yaoyinglong) Java Class文件中包含以下信息: [+]view code ClassFile { u4 magic;  ...

  2. vue-cli中config目录下的index.js文件详解

    vue-cli脚手架工具config目录下的index.js解析 转载自:http://www.cnblogs.com/ye-hcj/p/7077796.html // see http://vuej ...

  3. Vue中ESlint配置文件eslintrc.js文件详解

    最近在跟着视频敲项目时,代码提示出现很多奇奇怪怪的错误提示,百度了一下是eslintrc.js文件没有配置相关命令,ESlint的语法检测真的令人抓狂,现在总结一下这些命令的解释,方便以后查阅. 默认 ...

  4. vue-cli的utils.js文件详解

    转载自:http://www.cnblogs.com/ye-hcj/p/7078047.html utils.js文件 // 引入nodejs路径模块var path = require('path' ...

  5. 关于mongorc.js文件详解

    最近阅读了<<mongodb权威指南第二版>>,发现这本书比之前的第一版好,很多地方讲解很详细.下面就翻译下谈下这个文件. 首先,启动shell的时候,mongorc.js文件 ...

  6. Java自动化测试框架-12 - TestNG之xml文件详解篇 (详细教程)

    1.简介 现在这篇,我们来学习TestNG.xml文件,前面我们已经知道,TestNG就是运行这个文件来执行测试用例的.通过本篇,你可以进一步了解到:这个文件是配置测试用例,测试套件.简单来说,利用这 ...

  7. jni.h头文件详解二

    作者:左少华 博客:http://blog.csdn.net/shaohuazuo/article/details/42932813 转载请注明出处:http://blog.csdn.net/shao ...

  8. 【转】 jni.h头文件详解(二)

    原文网址:http://blog.csdn.net/shaohuazuo/article/details/42932813 作者:左少华 博客:http://blog.csdn.net/shaohua ...

  9. Android.mk文件详解(转)

    源:Android.mk文件详解 从对Makefile一无所知开始,折腾了一个多星期,终于对Android.mk有了一个全面些的了解.了解了标准的Makefile后,发现Android.mk其实是把真 ...

随机推荐

  1. Xilinx FPGA的专用时钟引脚及时钟资源相关

    主要参考了https://www.eefocus.com/liu1teng/blog/12-02/237897_4533d.html .Xilinx UG471.UG472以及Xilinx Forum ...

  2. vue自定义轻量级form表单校验

    遇到了form表单提交的需求,找了vue的组件觉得不够灵活,有时间自己写了一个. 调用方法 全局引入注册: import va from 'global/js/va' va.install(Vue); ...

  3. Oracle数据库的自动备份脚本

    @echo off echo ================================================ echo Windows环境下Oracle数据库的自动备份脚本 echo ...

  4. django的时间问题

    三个时间datetime.datetime.now().datetime.datetime.utcnow()与django.util.timezone.now()的区别 datetime.dateti ...

  5. 用Twebbrowser做可控编辑器与MSHTML(插入表格)

    在插入表格问题上出现与结果想象不一样的问题.看代码 <table border="1" cellpadding="0" width="100%& ...

  6. Vladik and Entertaining Flags

    Vladik and Entertaining Flags time limit per test 2 seconds memory limit per test 256 megabytes inpu ...

  7. noip模拟赛 括号序列

    题目描述LYK有一个括号序列,但这个序列不一定合法.一个合法的括号序列如下:()是合法的括号序列.若A是合法的括号序列,则(A)是合法的括号序列.若A和B分别是合法的括号序列,则AB是合法的括号序列. ...

  8. [TS-A1486][2013中国国家集训队第二次作业]树[树的重心,点分治]

    首先考虑暴力,可以枚举每两个点求lca进行计算,复杂度O(n^3logn),再考虑如果枚举每个点作为lca去枚举这个点的子树中的点复杂度会大幅下降,如果我们将每个点递归考虑,每次计算过这个点就把这个点 ...

  9. awr ash addm

    awr ash addm awr addm :基于快照的ash :单独,每秒采样 dbtime=db cpu + wait 柜员忙碌的时间=A做业务的时间+B做业务的时间等待时间=B等待A做业务的时间 ...

  10. UITextView上加入默认文字

    1. 实现UITextView的代理方法 text.view.delegate = self; 2. 在UITextView上覆盖UILabel ps:必须实现 label.enabled = NO; ...