1、java服务端参考代码
Netty结合protobuf_非ban必选的博客-优快云博客
protoc版本3.20.0
2、根据proto生成js文件参考
proto文件生成js_非ban必选的博客-优快云博客_proto转js
npm install -g require
npm install -g browserify
#最后一个要在proto文件所在的目录下安装
npm install google-protobuf@3.20.0
在proto文件所在目录执行
protoc.exe --js_out=import_style=commonjs,binary:. .\searchRequest.proto
browserify ./searchRequest_pb.js > searchRequestbody.js
3、nodejs代码 app.js
var pb = require('./searchRequest_pb');
var net = require('net');
var data = new pb.SearchRequest();
var group = pb.SearchRequest.Corpus.NEWS;
data.setCorpus(group);
data.setQuery('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdddddddddddddddddddddddddddddfffffffffffffffffffffffffffffffffffffffggggggggggggggggggggg');
data.setPageNumber(11);
var bytes = data.serializeBinary();
console.log("bytes"+bytes.length );
var unBytes = pb.SearchRequest.deserializeBinary(bytes);
//bytes.forEach(v => console.log(v));
var showData = null;
var onePackLength = null;
var client = new net.Socket();
client.connect(8000, "192.168.110.163");
client.on('connect', function(){
client.write(formFrame(bytes));
});
//监听data事件
client.on("data", function (data) {
reciveData(data);
});
client.on("error", function () {
console.log("error");
});
client.on("close", function () {
console.log("close");
});
function reciveData(data){
//打印数据 data类型是Buffer
if(!showData){
// null 第一个包 接收的数据长度 最大接收 65536字节
var reciveLegth = data