当前位置: 首页 > news >正文

机器人通信的通信渠道

通信渠道待学习:

- TCP(已支持)

- RESTful

Json RPC相关内容

http://wiki.geekdream.com/Specification/json-rpc_2.0.html

MQTT

1.什么是mqtt

mqtt是一种轻量级的,基于发布订阅模式的,适用于资源受限的设备和低带宽高延迟网络环境下,的消息传输协议

2.mqtt为什么适用于物联网


1,轻量级,物联网设备在处理能力,内存上具有限制,mqtt协议传输的报文小,消耗的资源最少,有限条件下也能够较好通信

2、可靠性:物联网环境具有高延迟的特点,mqtt具有Qos 等级,会话感知和保持连接能力,所以能够保证消息可靠传输

3、双向通信:mqtt具有发布订阅模式,使得设备之间能够进行双向通信。客户端能够向主题发布消息,也能够从主题订阅消息,从而实现数据交换,并且可以不于设备端耦合

4、保持连接:mqtt提供了客户端与Broker之间保持有状态会话的能力,能够记住订阅的话题和未发送的消息,此外,建立连接时可以指定间隔时间检查Broker连接状态。(Broker:MQTT 消息服务器 / 消息中间件

3.mqtt工作原理

MQTT是基于发布订阅模式的消息传输协议,该架构包括3个组件:客户端,Broker和主题。mqtt客户端通过主题发布和订阅消息,通过mqttBroker进行消息路由,并按照预设的Qos服务质量等级进行可靠传输。

mqtt客户端:凡是使用mqtt客户端库的设备或应用都是客户端,例如使用mqtt发送传感器数据,或者mqtt的测试工具

mqttBroker:处理客户端请求的的关键组件,具有建立连接断开链接,订阅和取消订阅等操作,以及进行消息转发的能力。接收发布者发布的消息,并根据订阅的主题将消息发送给订阅者

主题:具有层级结构的字符串,类似url路径,mqtt会通过主题发布和订阅消息。仅在订阅时能够使用通配符,+匹配单个层级,#匹配多个层级子路径

Qos质量等级:qos 0最多传送一次消息,1至少传递1次消息,2只传递1次

4.工作流程

1、客户端通过TCP协议与Broker建立连接,可以选择通过TSL或者SSL进行安全连接,

2、可以向特定主题发送消息,也可以订阅特定主题的消息。当客户端发布消息时,发布给mqtt Broker,当客户端订阅消息时,接收与订阅主题相关的消息。

3、broker接收到发布的消息,将消息转发给订阅了对应主题的客户端。根据qos等级进行可靠消息连接,并且为断开连接的客户端存储消息

https://www.emqx.com/zh/blog/the-easiest-guide-to-getting-started-with-mqtt

5.mqtt与http协议的区别

https://www.emqx.com/zh/blog/mqtt-vs-http

集成使用mqtt和http协议

机器人应用一,车联网应用都是集成使用mqtt和http协议,mqtt协议周期性的上报自身状态,存储到服务器中,用户需要获取时,通过http协议完成请求即可。

对于http面向mqtt,可以理解为,用户需要获取时通过将http消息转换成

6.mqtt与websocket协议的区别

https://www.emqx.com/zh/blog/mqtt-vs-websocket

mqtt与websocket对比
特性mqttwebsocket
架构发布订阅模式双向通信
通信异步通信、支持广播(一对多异步通信、点对点(一对一
连接类型通过Broker实现持久化连接直接持久化连接
消息分发Broker可为离线订阅缓存消息不支持原生队列,可靠性持久化需要借助额外组件在应用层实现
消息Qos0(最多1次),1(至少1次),2(仅1次)无内置Qos,依赖TCP
数据效率头部开销极小,效率高帧结构开销大
实时能力高、但Broker可能会引入延迟极高、支持数据即时传输
受限网络条件下的能力适应性强,适合各种网络条件在稳定网络下表现最佳
使用场景IoT、遥测、受限网络、云原生事件流、微服务、AI 数据管道、数字孪生、SDV适用于实时 Web 应用、游戏和互动平台

Webocket

https://cloud.tencent.com/developer/article/2403374

1.什么是websocket

Websocket是一种协议,在web应用程序与服务器之间建立实时、双向的连接

通过一个单一的TCP建立持久化连接,使得web应用程序能够实时传输数据

2.websocket的优势与劣势

优势:

  • 实时:由于Websocket的持久化连接,可以实现实时的传输数据,避免了web应用程序多次发送请求以获取最新数据(web页面上部分数据是实时推送过来的,而非每次请求去获取的)
  • 双向:websocket协议支持双向通信,服务器能够主动的推送数据到客户端

劣势:

  • 需要服务器和浏览器都支持:协议比较新,需要都支持才能使用
  • 资源占用:在服务器上建立持久化的连接需要持续消耗CPU和内存

3.websocket工作流程

流程分为4个阶段:连接建立阶段、连接开放阶段、连接关闭阶段、连接关闭完成阶段

客户端向服务器发送一次websocket握手请求,服务端建立请求返回连接的websocket响应,客户端和服务端在建立的连接上发送数据,直到其中一方发送带有关闭帧的数据来关闭连接,关闭帧被接收后连接关闭。

JSON-RPC

参考学习:https://blog.csdn.net/2301_79556402/article/details/154883488?ops_request_misc=elastic_search_misc&request_id=63382fcf5c47dc89ecaf1a926bafd4a4&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-3-154883488-null-null.142^v102^pc_search_result_base1&utm_term=JSON-RPC&spm=1018.2226.3001.4187

1、什么是JSON-RPC

JSON-RPC是一种约定好的,基于JSON格式的沟通协议。它允许在不同运行环境和不同语言下通过网络进行函数调用。

JSON:轻量级的,一种易于机器解析和生成的数据格式

// 这就是JSON,它描述了一个人 { "name": "张三", "age": 30, "isStudent": false }

RPC:远程过程调用。像调用本地函数一样去调用远程服务器上的函数

2、怎么使用JSON-RPC

JSON-RPC的格式:客户端和服务器必须严格按照这个格式发消息、解析消息,才能正常通信。

完整格式分3类:

请求格式:客户端->服务端

成功响应格式:服务端->客户端

错误响应格式:服务端->客户端

  1. 请求格式:
{ "jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "id": 1 }

jsonrpc: 必须。声明协议版本,永远是 "2.0"。

method: 必须。一个字符串,指定要调用的远程方法名。

params: 可选。调用方法时传递的参数。可以是数组(如上例),也可以是对象(如 {"minuend": 42, "subtrahend": 23})。

id: 可选,但强烈建议有。用于匹配请求和响应。如果是一个通知类型的请求(不需要回复),可以省略 id。

  1. 成功响应格式:
{ "jsonrpc": "2.0", "result": 19, "id": 1 }

jsonrpc:必须。同样是"2.0"

result:必须(成功时)。由被调用方法返回的数据。

id:必须。必须与对应请求中的id完全一致。

  1. 失败响应格式
{ "jsonrpc": "2.0", "error": { "code": -32601, "message": "Method not found", "data": "The method 'foo' does not exist." }, "id": 1 }

error:必须(失败时)。一个包含错误信息的对象。

code: 预定义的错误码(如-32700解析错误,-32601方法未找到,-32602无效参数)。

message: 错误的简短描述。

data:可选。包含关于错误的额外信息。

批量操作(强大功能)

一次性发送多个请求:

[ {"jsonrpc": "2.0", "method": "sum", "params": [1,2,4], "id": "1"}, {"jsonrpc": "2.0", "method": "notify_hello", "params": [7]}, {"jsonrpc": "2.0", "method": "subtract", "params": [42,23], "id": "2"} ]

服务器会按顺序处理并返回一个响应数组:

[ {"jsonrpc": "2.0", "result": 7, "id": "1"}, {"jsonrpc": "2.0", "result": 19, "id": "2"} ] // 注意:第二个请求是通知(无id),所以没有对应的响应。

3、为什么使用JSON-RPC

JSON-RPC 的优势:

  • 非常专注:它生来就是为了“远程调用”,协议本身只关心请求、响应和通知,没有 REST 那种“资源”、“URI”、“HTTP方法”等概念。对于需要执行一个“动作”或“命令”的场景(比如“重启服务器”、“执行一个复杂查询”、“批量处理数据”),JSON-RPC 的表达更直接。
  • 高灵活性:因为方法名和参数结构完全自定义,后端可以轻松地增加新的“方法”(API)而无需改变 URL 结构。对于内部微服务之间的通信,这种灵活性非常宝贵。
  • 批量操作:JSON-RPC 支持将多个请求打包成一个数组发送(批量请求),服务器会处理所有请求并返回一个响应数组。这能显著减少网络往返开销,提升性能。
  • 与传输层无关:虽然最常跑在 HTTP 上,但 JSON-RPC 协议本身也可以用在 WebSocket、TCP 甚至消息队列上,非常适合需要长连接、双向通信的场景(如实时应用)。
vs. RESTful API:一个简单的比喻 RESTful API 像是一个图书馆管理员。 你通过“动作”(HTTP方法)来操作“资源”(URI)。 GET /books/1 (获取ID为1的书) POST /books (创建一本新书) PUT /books/1 (更新ID为1的书) 它非常适合于围绕“资源”进行增删改查的模型。 JSON-RPC 像是一个万能服务员。 你直接告诉他你要“干什么”和“需要什么”。 {"method": "getBook", "params": {"id": 1}} {"method": "createBook", "params": {"title": "..."}} {"method": "updateBook", "params": {"id": 1, "title": "..."}} 它非常适合于执行各种不同的“命令”和“操作”。

4、总结


是什么:JSON-RPC 是一种基于 JSON 的轻量级远程调用协议。

为什么:它灵活、专注、支持批量操作,特别适合内部服务间通信和命令型操作,与 REST 是不同设计哲学下的产物。

怎么做:遵循固定的请求-响应格式,通过 method 指定动作,params 传递参数,id 匹配请求,并妥善处理成功 (result) 和错误 (error) 情况。

http://www.jsqmd.com/news/778260/

相关文章:

  • AI 内容导出乱、格式崩、公式变?我开发了这只鸭子帮我全解决了(五)** AI导出鸭 专写开发者篇:技术文档、代码导出、API文档,那些细节决定成败
  • 2026宁波婚纱摄影口碑排名:从客户真实评价数据,看宁波婚纱照哪家好 - charlieruizvin
  • Z-Image开源工具用户反馈实录:AI工程师如何用Z-Image-LM提升调试效率3倍
  • 从OpenClaw到Bramble:构建可破解、安全可控的AI代理框架实践
  • 别再写流水账了!用这个在线电影管理系统用例规约模板,3分钟搞定核心业务逻辑
  • CTFshow文件上传刷题
  • TypeORM游标分页库实战:解决大数据量分页的性能与一致性难题
  • 国内CNAS检测机构排行:权威合规与服务能力对比 - 奔跑123
  • AI设计:零基础用稿定设计+AI提示词快速生成技术封面与海报
  • 基于MCP协议构建本地AI文档解析服务器:rendoc-mcp-server实战指南
  • Chaterm:AI原生终端如何重塑运维工作流与团队协作
  • Vue+React混合架构实战:构建AI地图搜索与地理CRM应用
  • 从混淆矩阵到AUC:5分钟搞懂P-R曲线和ROC曲线的区别与联系
  • CircuitPython串口终端ANSI转义序列应用:彩色调试与动态界面实现
  • 【FourAndSix.2.01渗透测试手把手超详细教程附下载链接】
  • 真机调试实践
  • 西安商务KTV排行推荐:5家正规高端场地哪家好 口碑好 - 奔跑123
  • OpenClaw项目解析:Python自动化爬虫框架架构与实战应用
  • 户外工地长效防晒霜,硬核防晒不翻车,亲测好用的6款防晒 - 全网最美
  • vurb.ts:现代前端状态管理的可组合与类型安全实践
  • 别再死记硬背了!用eNSP模拟真实公司网络,5分钟搞懂交换机Trunk口到底怎么配
  • 2026年玉溪古法黄金品牌测评:三大维度甄选 - charlieruizvin
  • React生态选型指南:基于best-of-react榜单的高效决策
  • 从万用表到TDR:电缆测试工具全解析与现场实操指南
  • 基于大语言模型的论文智能解析与XMind导图自动化生成实践
  • 羽毛球知识扩展: 羽毛球拍磅数怎么挑?(羽毛球运动指南:磅数选择与规则更新)
  • 2026年新疆目的地婚礼推荐榜TOP5,看完不纠结 - 速递信息
  • Jetson Orin Nano:安装NVIDIA SDK Manager
  • 2026 西安高端派对场地、商务ktv场地哪家好 推荐一下 - 奔跑123
  • STM32F103的CAN通信,从汽车电子到你的开发板:一个完整的数据收发实战