ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # 什么是RPC 即Remote Procedure Call,远程过程调用, ## 与AJAX的区别 * 两个计算机直接的通信 * 双方约定数据协议 ## 与AJAX的区别 * 不一定使用DNS作为寻址服务。因为一般在内网,使用DNS划不过来 * 应用层协议一般不使用HTTP。 * 单工通信 * 半双工通信 * 全双工通信 * 有可能基于TCP、UDP协议。 * 二进制协议 # 编解码二进制包 ## Node API ### 创建Buffer Buffer.from:使用指定内容创建Buffer Buffer.alloc:创建指定大小的Buffer ### 编写Buffer Buffer.writeInt8 Buffer.writeInt16LE Buffer.writeInt16BE Buffer.writeInt32LE Buffer.writeInt32BE ## 库 protocol-buffers https://www.npmjs.com/package/protocol-buffers # net 搭建多路复用RPC * 全双工通信 * 应用层协议要有标记包号字段seq * 处理一下情况,需要标记包长字段 * 粘包 * 不完整包 * 错误处理 # 参考文档 [Node开发实战](https://time.geekbang.org/course/intro/100036001) [聊聊 Node.js RPC(一)— 协议](https://www.yuque.com/egg/nodejs/dklip5)