mac protobuf java_mac 下 使用 protobuf 生成 java 及 js 及配合socket.io 使用
定义一个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 使用相关推荐
- h5 socket.io java,从HTML5 WebSocket到Socket.io
HTML5 WebSocket 作为新一代的web标准,HTML5为我们提供了很多有用的东西,比如canvas,本地存储(已经分离出去了),多媒体编程接口,当然还有我们的WebSocket.WebSo ...
- mac tomcat java_Mac下配置Java开发环境(JDK1.8)和Tomcat服务器
平时做PHP,装的有nginx,mysql这儿就不多说了,可以看前面的相关文章,用的brew配置的,超简单. 今天介绍一下Java相关的配置 Java官网下载:http://www.oracle.co ...
- avro java_avro序列化框架实践(一)根据schema文件反向生成java类
原标题:avro序列化框架实践(一)根据schema文件反向生成java类 avro是一款序列化框架,定义schema文件,可以生成java类,然后配合就可以序列化.反序列化对象. 定义user.av ...
- java 返回js_如何基于java或js获取URL返回状态码
这篇文章主要介绍了如何基于java或js获取URL返回状态码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参fgLAeaGAH考下 描述:使用java或者 ...
- Protobuf生成Java代码(命令行)
1.说明 本文介绍Protobuf生成Java代码的方法, 下载必须的Protobuf工具, 然后通过命令行, 把.proto文件生成Java代码. 2.准备Protobuf工具 2.1.获取prot ...
- Protobuf生成Java代码(Maven)
1.说明 本文介绍Protobuf生成Java代码的方法, 配置对应的Maven插件, 把.proto文件生成Java代码. 2.插件配置 创建Maven工程grpc-compile, 修改pom.x ...
- 使用Protobuf文件一键生成Java类
使用Protobuf文件生成Java类 .proto 文件生成 .java 参考 看了一篇文章:主题是 proto 先生成 desc,然后在用 FreeMarker 模板引擎来做代码自动生成了: .p ...
- protobuf java linux_linux下安装protobuf及其使用
linux下安装protobuf及在python与php上的应用 下载解压源文件 github上的版本发布地址 https://github.com/protocolbuffers/protobuf/ ...
- M1 芯片maven 编译protobuf生成Java代码时,不能找到protoc-gen-grpc-java:exe:osx-aarch_64问题记录
背景描述: 换电脑后使在m1芯片编译protobuf的maven插件,来生成项目代码,发现无法下载到arm版本的插件,报错如图: 本地使用 brew install protobuf安装的最新版本: ...
最新文章
- php面向对象中的魔术方法中文说明
- buu old-fashion
- C#访问MySQL数据库的方法
- LeetCode 87. 扰乱字符串(记忆化递归 / DP)
- Mybatis中Mapper动态代理方式
- “拼木头”算法挑战赛:禁忌搜索算法,用Javascript 跑
- 吴恩达机器学习 逻辑回归 作业3(手写数字分类) Python实现 代码详细解释
- 一台linux服务器配置多个tomcat应用
- MapReduce计算框架知识总结(一)
- pyinstaller 32位 64位的问题
- seay代码审计mysql插件报错_Seay源代码审计系统2.1版本下载(附源码): 人人都是代码审计师...
- JavaScript中的this指向以及bind()函数
- 程序员做外包有前途吗?
- 屏幕录像软件无法录制电脑视频解决办法
- 传说之下三重审判用计算机怎么弹,传说之下三重审判模拟器
- python——求解微分方程
- Python之logic
- style-loader和css-loader
- pytorch训练网络冻结某些层
- 专访李云:从通讯行业的架构师到互联网“新兵” 李云csdn
热门文章
- 浏览ASP时遇到以下错误: Microsoft VBScript 运行时错误 错误 '800A01AD' ActiveX 部件不能创建对象:'NetBox.HttpServer'
- 关于Unity特效未播放完的问题
- Python基础语法笔记
- 新版ideal2021配置Tomcat
- PHP爬虫,提取网站中的关键词,用一次正则匹配,然后再PHP数组的操作
- 手机里tencent文件夹能删吗_【我要删除tencent文件夹】手机删了tencent文件夹_tencent什么文件夹...
- 【机器学习中的矩阵分解】LU分解、QR分解、SVD分解
- 华睿相机sdk 开发_岳阳楼区供应睿鉑倾斜五镜头相机D2PSDK是
- java如何数字竖排输出_Java输出竖排文字
- matlab error 15,为什么我遇到了“License Manager Error -15”的错误?