RuleGo RuleGo
🏠首页
  • 快速入门
  • 规则链
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 可视化
  • RuleGo-Server
  • AOP
  • 触发器
  • 高级主题
  • 性能
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 流式计算
  • 组件市场
  • 概述
  • 快速入门
  • 路由
  • DSL
  • API
  • Options
  • 组件
🔥编辑器 (opens new window)
  • 可视化编辑器 (opens new window)
  • RuleGo-Server (opens new window)
  • 🌊StreamSQL
  • 🤖智能体框架
  • 🦀TPCLAW 智能体平台 (opens new window)
  • ❓问答

    • FAQ
💖支持
👥加入社区
  • Github (opens new window)
  • Gitee (opens new window)
  • GitCode (opens new window)
  • 更新日志 (opens new window)
  • English
  • 简体中文
🏠首页
  • 快速入门
  • 规则链
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 可视化
  • RuleGo-Server
  • AOP
  • 触发器
  • 高级主题
  • 性能
  • 标准组件
  • 扩展组件
  • 自定义组件
  • 流式计算
  • 组件市场
  • 概述
  • 快速入门
  • 路由
  • DSL
  • API
  • Options
  • 组件
🔥编辑器 (opens new window)
  • 可视化编辑器 (opens new window)
  • RuleGo-Server (opens new window)
  • 🌊StreamSQL
  • 🤖智能体框架
  • 🦀TPCLAW 智能体平台 (opens new window)
  • ❓问答

    • FAQ
💖支持
👥加入社区
  • Github (opens new window)
  • Gitee (opens new window)
  • GitCode (opens new window)
  • 更新日志 (opens new window)
  • English
  • 简体中文

广告采用随机轮播方式显示 ❤️成为赞助商
  • 快速入门

  • 规则链

  • 标准组件

    • 标准组件概述
    • 公共

    • 过滤器

    • 动作

    • 转换器

    • 外部的

      • HTTP客户端
      • MQTT客户端
      • 发送邮件
      • 数据库客户端
      • ssh
      • TCP/UDP客户端
      • WebSocket客户端
        • 配置
        • 心跳与重连(出站模式)
        • Relation Type
        • 配置示例
          • 出站拨号
          • 会话寻址推送(ref:// 模式)
          • 带认证与子协议
        • 与 endpoint/ws_client 的区别
        • 应用示例
      • 缓存设置
      • 缓存获取
      • 缓存删除
    • 流

  • 扩展组件

  • 自定义组件

  • 组件市场

  • 可视化

  • AOP

  • 触发器

  • 高级主题

  • 智能体框架

  • RuleGo-Server

  • 问题

目录

WebSocket客户端

ws 组件:WebSocket 客户端节点,对称 net 组件。两种工作模式:

  • 出站拨号(server=ws://host:port):作为 WebSocket 客户端拨号连接远端服务器,发送消息
  • 会话寻址推送(server=ref://<endpoint/ws 实例ID>):复用服务端 endpoint 已建立的 WS 连接,按 target 向指定客户端主动推送

提示

  • 出站模式:文本/JSON 消息按原样发送;BINARY 类型或 messageType=binary 发送二进制帧
  • 寻址模式:与 net 组件 ref:// 模式一致,target 支持 ${} 表达式

# 配置

字段 类型 是否必填 说明 默认值
server string 是 ws://host:port 拨号发送;或 ref://<endpoint/ws 实例ID> 寻址推送 -
target string 否 寻址目标,仅 server 为 ref:// 时生效。支持 ${} 表达式;值为 sessionKey 标识(如 deviceId)/*(广播),精确匹配不按 IP 聚合 -
headers object 否 握手时的 HTTP 请求头,如 Authorization -
subprotocol string 否 Sec-WebSocket-Protocol 子协议,如 mqtt / ocpp1.6。留空不协商 -
connectTimeout int 否 拨号握手超时(秒),<=0 用默认 0
insecureSkipVerify bool 否 跳过 TLS 证书验证(wss:// 自签证书场景) false
messageType string 否 发送的消息类型:text / binary text
heartbeatInterval int 否 心跳间隔(秒)。>0 定期发 Ping 帧保活+断线重连;0=禁用心跳与重连 60

# 心跳与重连(出站模式)

当 heartbeatInterval > 0 时,出站模式启用心跳保活与断线重连:

  • 心跳:按间隔发送 WebSocket 协议级 Ping 帧,保持连接活跃
  • 重连:连接断开(Ping 失败或读循环检测到错误)后自动重新拨号
  • 读循环:内部持续读取以处理对端返回的 Pong 帧,并感知连接断开
  • heartbeatInterval=0:不发送心跳也不自动重连;但写失败时会重置连接缓存,下次发送自动重新拨号

并发安全

gorilla/websocket 的 WriteMessage 不支持并发写,组件内部已用互斥锁保护业务发送;Ping 控制帧可与业务发送并发,无需额外加锁。

# Relation Type

  • Success: 消息发送/推送成功时,将消息转发到 Success 链路
  • Failure: 以下情况消息发送到 Failure 链:
    • 拨号失败(出站模式)
    • 发送超时/连接断开
    • 寻址模式:target 未匹配任何会话,或表达式解析为空(非显式 *)

# 配置示例

# 出站拨号

{
  "id": "s1",
  "type": "ws",
  "name": "发送到ws服务",
  "configuration": {
    "server": "ws://127.0.0.1:8080/ws",
    "heartbeatInterval": 30
  }
}
1
2
3
4
5
6
7
8
9

# 会话寻址推送(ref:// 模式)

{
  "id": "s2",
  "type": "ws",
  "name": "下发指令",
  "configuration": {
    "server": "ref://ws_endpoint_1",
    "target": "${metadata.deviceId}"
  }
}
1
2
3
4
5
6
7
8
9

# 带认证与子协议

{
  "id": "s3",
  "type": "ws",
  "configuration": {
    "server": "wss://api.example.com/stream",
    "headers": { "Authorization": "Bearer token123" },
    "subprotocol": "mqtt",
    "insecureSkipVerify": true
  }
}
1
2
3
4
5
6
7
8
9
10

# 与 endpoint/ws_client 的区别

  • ws 组件(本组件,type=ws):发送节点,作为客户端向远端发送,或 ref:// 寻址推送已连接的客户端
  • endpoint/ws_client:接收端点,主动连接远端 server 订阅其推送的消息。详见 websocket client endpoint

# 应用示例

示例参考:WebSocket 客户端测试 (opens new window)

在 GitHub 上编辑此页 (opens new window)
上次更新: 2026/07/29, 07:07:39
TCP/UDP客户端
缓存设置

← TCP/UDP客户端 缓存设置→

Theme by Vdoing | Copyright © 2023-2026 RuleGo Team | Apache 2.0 License

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式