zoukankan      html  css  js  c++  java
  • protobuf 编译 java js文件详解

    首先下载protobuf.exe

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

    MessageBody.proto
    syntax = "proto3";
    
    message messagebody{
        //工厂 3G
        string factory = 1;
        
        //设备id 3918173069
        string deviceId = 2;
        
        //内容长度的长度   消息类型+消息主体 = 内容长度
        string length = 3;
        
        //消息类型
        string type = 4;
        
        //消息主体
        string body = 5;
        
        //时间戳
        string timeStamp = 6;
        
        //发送人
        string sender = 7;
        
        //接收人
        string receiver = 8;
        
        //用户组编号
        string groupId =9;
    }
     

    编译解释:

    工具编译 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:. jsMessageBody.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。
    
    6.对文件进行编译打包
    执行命令 
    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("0009");//长度
    content.setType(message);//类型
    content.setBody("0,150,56");//内容
    var bytes = content.serializeBinary();
  • 相关阅读:
    jQuery拖动调整表格列宽度-resizableColumns
    图像切割之(一)概述
    内存泄漏以及常见的解决方法
    中国大概能用的NTPserver地址
    SWFUpload简单使用样例 Java版(JSP)
    XML是什么,它能够做什么?——写给XML入门者
    MfC 进度条控件
    IP地址的分类——a,b,c 类是怎样划分的
    Python的包管理工具Pip
    Chapter 1 Securing Your Server and Network(6):为SQL Server訪问配置防火墙
  • 原文地址:https://www.cnblogs.com/iathanasy/p/10037436.html
Copyright © 2011-2022 走看看