node js RPC 调用
2021年11月24日TCP 通信方式
使用二进制协议,更小的数据包体积,更快的解码速率
|
1 2 3 |
单工通信 半双工通信(轮番单工) 全双工通讯 ---------------->实现成本高(不需要等待返回就可以发送) |
Buffer 模块
目前我知道只能创建 字符串buffer 和 数组buffer 还有 定长buffer 用于占位 , buffer 打印出来的都是16进制数据
创建buffer
|
1 2 3 |
const buffer1 = Buffer.from('geekbang'); const buffer2 = Buffer.from([1, 2, 3, 4]); const buffer4 = Buffer.alloc(20); |
修改buffer
|
1 2 3 |
buffer2.writeInt8(12, 1); #8进制写入 buffer2.writeInt16LE(512, 2); #16进制写入 低位在前 buffer2.writeInt16BE(512, 2); #16进制写入 低位在后 |
protocol buffer 谷歌编解buffer码
|
1 |
npm i protocol-buffers |
示例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
const protobuf = require('protocol-buffers'); /** * 字符串代表协议,协议生成了一些方法 */ const schemas = protobuf( 'message Course {' + ' required float id = 1;' + ' required string name = 2;' + ' repeated Lesson lesson = 3;' + '}' + 'message Lesson {' + ' required float id = 1;' + ' required string title = 2;' + '}' ); const enBuffer = schemas.Course.encode({id: 4, name: 'hh', lesson: []}) //根据协议编码 const deBuffer = schemas.Course.decode(enBuffer) //根据协议解码 console.log(enBuffer); console.log(deBuffer); |