Skip to content

设备接入(WebSocket 协议) ​

这篇解决什么 ​

设备 WebSocket 听哪条路径、帧格式跟谁一样。读完能对上 protocol: websocket 和 IotWebSocketProtocol,不要连到管理端 /infra/ws。

产品 protocolType 填 websocket。先看 设备接入(概述)。管理端通知那条 WS 见 IM WebSocket。

示意图:路径不对直接 reject。连上后第一帧仍是 auth / 注册。

从哪改 ​

名称说明仓库路径
协议Vert.x HttpServer + WSruoyi-office/yudao-module-iot/yudao-module-iot-gateway/.../websocket/IotWebSocketProtocol.java
上行auth / 注册 / 业务IotWebSocketUpstreamHandler
连接一设备一连接,旧的踢掉IotWebSocketConnectionManager
样例id: websocket-json,默认关,端口 8094application.yaml

样例:serialize: json,websocket.path=/ws,max-message-size / max-frame-size 默认 65536,idle-timeout-seconds=60。路径不等于配置值会拒绝握手。

帧语义接近 TCP:method=auth 带 username/password;thing.auth.register 走一型一密;其它帧要先认证。未认证业务帧回未授权。

可配实例 SSL。下行走同一条 WS。空闲超时由 HttpServer idleTimeout 断开。

这不是 yudao.websocket.path=/infra/ws。那条给管理端 im-notification。设备连 48080 的 /infra/ws 过不了设备认证。

字段 ​

名称说明仓库路径
port样例 8094ProtocolProperties
websocket.path默认 /wsIotWebSocketConfig
idle-timeout-seconds空闲断开同上
methodauth / 注册 / 业务IotWebSocketUpstreamHandler

两条 ws 不要混

设备:网关进程 + 配置端口 + /ws。人:单体 48080 + /infra/ws?token=。连错一边,会话在、设备不在线。

同设备重复连接会踢旧连接

registerConnection 发现已有连接会先断旧的。固件不要开两条 WS 当负载。

示意图:按本仓库实现画的时序。

配置与操作 ​

yaml 开 id: websocket-json,protocol: websocket,默认口 8094。设备连网关这条 WS,不要连管理端 /infra/ws。产品 protocolType 填 websocket。帧语义对齐 HTTP / MQTT 的 IotDeviceMessage。

开启见 IoT 功能设计。

IoT 首页

本系统截图:IoT 首页。协议实例在网关 yaml,没有「MQTT / HTTP」独立菜单。

相关篇 ​

联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版