定义一个ProtoBuf源文件,gps_data.proto

syntax = "proto3";

message gps_data {

int64 id = 1;

string terminalId = 2;

string dataTime = 3;

double lon = 4;

double lat = 5;

float speed = 6;

int32 altitude = 7;

int32 locType = 8;

int32 gpsStatus = 9;

float direction = 10;

int32 satellite = 11;

}

进入当前目录 生成java: protoc ./gps_data.proto --java_out=./

生成js : protoc ./gps_data.proto --js_out=./

基于socket.io protobuf 的使用

前台:

引入 protobuf.js cdn 节点

protobuf.load("/static/protobuf/gps_data.proto", function (err, root) {

if (err) throw err;

gps_data = root.lookupType("gps_data");

let message = gps_data.create({dataTime: "2018-07-03",terminalId:"我们都有一个家名字叫中国"});

console.log(`message = ${JSON.stringify(message)}`);

let buffer = gps_data.encode(message).finish();

console.log(`buffer = ${Array.prototype.toString.call(buffer)}`);

console.log(buffer)

//参考文章: https://www.cnblogs.com/gradolabs/p/4762134.html

var bufArr = new ArrayBuffer(buffer.length);

var bufView = new Uint8Array(bufArr);

bufView.set(buffer)

console.log(bufArr)

socket.emit("protobufTest", bufArr, function (data) {

console.log("后台 传回来的 byte 数据 :==============》")

var d = new Uint8Array(data.byteLength);

var dataView = new DataView(data);

for (var i = 0; i < data.byteLength; i++) {

d[i] = dataView.getInt8(i);

}

console.log(d)

let decoded = gps_data.decode(d);

console.log(`decoded = ${JSON.stringify(decoded)}`);

})

// let decoded = AwesomeMessage.decode(buffer);

// console.log(`decoded = ${JSON.stringify(decoded)}`);

});

后端:

maven 引入 :

com.google.protobuf

protobuf-java

3.6.0

// server.addEventListener("protobufTest", byte[].class, (client, data, ackRequest) -> {

// GpsData.gps_data gps_data = GpsData.gps_data.parseFrom(data);

// System.out.println("after :" + gps_data.toString());

// });

//使用protobuf 测试传输的数据 使用了springboot后台框架

@OnEvent(value = "protobufTest")

public void onProtobufTest(SocketIOClient client, AckRequest ackRequest, byte[] data) throws InvalidProtocolBufferException {

if (ackRequest.isAckRequested()) {

ackRequest.sendAckData(data);

}

GpsData.gps_data gps_data = GpsData.gps_data.parseFrom(data);

System.out.println("after :" + gps_data.toString());

}

mac protobuf java_mac 下 使用 protobuf 生成 java 及 js 及配合socket.io 使用相关推荐

  1. h5 socket.io java,从HTML5 WebSocket到Socket.io

    HTML5 WebSocket 作为新一代的web标准,HTML5为我们提供了很多有用的东西,比如canvas,本地存储(已经分离出去了),多媒体编程接口,当然还有我们的WebSocket.WebSo ...

  2. mac tomcat java_Mac下配置Java开发环境(JDK1.8)和Tomcat服务器

    平时做PHP,装的有nginx,mysql这儿就不多说了,可以看前面的相关文章,用的brew配置的,超简单. 今天介绍一下Java相关的配置 Java官网下载:http://www.oracle.co ...

  3. avro java_avro序列化框架实践(一)根据schema文件反向生成java类

    原标题:avro序列化框架实践(一)根据schema文件反向生成java类 avro是一款序列化框架,定义schema文件,可以生成java类,然后配合就可以序列化.反序列化对象. 定义user.av ...

  4. java 返回js_如何基于java或js获取URL返回状态码

    这篇文章主要介绍了如何基于java或js获取URL返回状态码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参fgLAeaGAH考下 描述:使用java或者 ...

  5. Protobuf生成Java代码(命令行)

    1.说明 本文介绍Protobuf生成Java代码的方法, 下载必须的Protobuf工具, 然后通过命令行, 把.proto文件生成Java代码. 2.准备Protobuf工具 2.1.获取prot ...

  6. Protobuf生成Java代码(Maven)

    1.说明 本文介绍Protobuf生成Java代码的方法, 配置对应的Maven插件, 把.proto文件生成Java代码. 2.插件配置 创建Maven工程grpc-compile, 修改pom.x ...

  7. 使用Protobuf文件一键生成Java类

    使用Protobuf文件生成Java类 .proto 文件生成 .java 参考 看了一篇文章:主题是 proto 先生成 desc,然后在用 FreeMarker 模板引擎来做代码自动生成了: .p ...

  8. protobuf java linux_linux下安装protobuf及其使用

    linux下安装protobuf及在python与php上的应用 下载解压源文件 github上的版本发布地址 https://github.com/protocolbuffers/protobuf/ ...

  9. M1 芯片maven 编译protobuf生成Java代码时,不能找到protoc-gen-grpc-java:exe:osx-aarch_64问题记录

    背景描述: 换电脑后使在m1芯片编译protobuf的maven插件,来生成项目代码,发现无法下载到arm版本的插件,报错如图: 本地使用 brew install protobuf安装的最新版本: ...

最新文章

  1. php面向对象中的魔术方法中文说明
  2. buu old-fashion
  3. C#访问MySQL数据库的方法
  4. LeetCode 87. 扰乱字符串(记忆化递归 / DP)
  5. Mybatis中Mapper动态代理方式
  6. “拼木头”算法挑战赛:禁忌搜索算法,用Javascript 跑
  7. 吴恩达机器学习 逻辑回归 作业3(手写数字分类) Python实现 代码详细解释
  8. 一台linux服务器配置多个tomcat应用
  9. MapReduce计算框架知识总结(一)
  10. pyinstaller 32位 64位的问题
  11. seay代码审计mysql插件报错_Seay源代码审计系统2.1版本下载(附源码): 人人都是代码审计师...
  12. JavaScript中的this指向以及bind()函数
  13. 程序员做外包有前途吗?
  14. 屏幕录像软件无法录制电脑视频解决办法
  15. 传说之下三重审判用计算机怎么弹,传说之下三重审判模拟器
  16. python——求解微分方程
  17. Python之logic
  18. style-loader和css-loader
  19. pytorch训练网络冻结某些层
  20. 专访李云:从通讯行业的架构师到互联网“新兵” 李云csdn

热门文章

  1. 浏览ASP时遇到以下错误: Microsoft VBScript 运行时错误 错误 '800A01AD' ActiveX 部件不能创建对象:'NetBox.HttpServer'
  2. 关于Unity特效未播放完的问题
  3. Python基础语法笔记
  4. 新版ideal2021配置Tomcat
  5. PHP爬虫,提取网站中的关键词,用一次正则匹配,然后再PHP数组的操作
  6. 手机里tencent文件夹能删吗_【我要删除tencent文件夹】手机删了tencent文件夹_tencent什么文件夹...
  7. 【机器学习中的矩阵分解】LU分解、QR分解、SVD分解
  8. 华睿相机sdk 开发_岳阳楼区供应睿鉑倾斜五镜头相机D2PSDK是
  9. java如何数字竖排输出_Java输出竖排文字
  10. matlab error 15,为什么我遇到了“License Manager Error -15”的错误?