YStudio Y++

WebSocket类

Y++ / YStudio 开发文档 · 一点滴

类对象支持库(不是扁平命令)。路径:支持库 → 扩展类库 → WebSocket类。

类型名必须写完整「WebSocket类」。声明时自动创建,一般无需再调 创建*。

硬约束

  1. 类型名必须写「WebSocket类」。
  2. 支持客户端 ws/wss 与服务端启动/广播(以方法表为准)。
  3. 事件回调勿长时间阻塞 UI。

快速开始

WebSocket类 ws
// 连接 / 发文本 / 事件:见下方命令介绍

WebSocket类/创建

共 1 条。

创建WebSocket

  • 签名:通用 创建WebSocket()
  • 说明:创建一个 WebSocket 会话。一般直接写「WebSocket类 ws」即可(声明时自动创建);「创建WebSocket()」仅在需要显式赋值时使用。

WebSocket类/事件

共 10 条。

客户进入

  • 签名:无 客户进入(子程序指针 回调)
  • 说明:注册「连接建立」回调;传 0 清除。(推荐名;旧名「连接成功」)
  • 参数一│子程序指针 回调: 形参固定为: 函数 名(整数 连接ID, 文本 IP, 整数 端口, 文本 IP端口) · 客户端:仅异步 连接() 成功时触发;连接ID 固定为 1;IP/端口为连接目标。 · 服务端:每个客户端握手成功触发一次;连接ID 从 1 递增。

连接成功

  • 签名:无 连接成功(子程序指针 回调)
  • 说明:同「客户进入」(兼容旧名)。形参已升级为带 IP/端口。
  • 参数一│子程序指针 回调: 形参同 客户进入。

连接失败

  • 签名:无 连接失败(子程序指针 回调)
  • 说明:注册「异步连接失败」回调;传 0 清除。仅 连接() 失败时触发。
  • 参数一│子程序指针 回调: 形参固定为:函数 名(文本 原因)。 仅 连接()(异步)失败时触发;连接_同步 失败看返回值与 取错误()。

数据到达

  • 签名:无 数据到达(子程序指针 回调)
  • 说明:注册「收到文本帧」回调;传 0 清除。(推荐名;旧名「消息到达」)
  • 参数一│子程序指针 回调: 形参固定为: 函数 名(整数 连接ID, 文本 IP, 整数 端口, 文本 IP端口, 文本 数据)

消息到达

  • 签名:无 消息到达(子程序指针 回调)
  • 说明:同「数据到达」(兼容旧名)。
  • 参数一│子程序指针 回调: 形参同 数据到达。

数据到达字节集

  • 签名:无 数据到达字节集(子程序指针 回调)
  • 说明:注册「收到二进制帧」回调;传 0 清除。(推荐名;旧名「消息到达字节集」)
  • 参数一│子程序指针 回调: 形参固定为: 函数 名(整数 连接ID, 文本 IP, 整数 端口, 文本 IP端口, 字节集 数据)

消息到达字节集

  • 签名:无 消息到达字节集(子程序指针 回调)
  • 说明:同「数据到达字节集」(兼容旧名)。
  • 参数一│子程序指针 回调: 形参同 数据到达字节集。

客户离开

  • 签名:无 客户离开(子程序指针 回调)
  • 说明:注册「连接关闭」回调;传 0 清除。(推荐名;旧名「连接关闭」)
  • 参数一│子程序指针 回调: 形参固定为: 函数 名(整数 连接ID, 文本 IP, 整数 端口, 文本 IP端口, 整数 状态码, 文本 原因)

连接关闭

  • 签名:无 连接关闭(子程序指针 回调)
  • 说明:同「客户离开」(兼容旧名)。
  • 参数一│子程序指针 回调: 形参同 客户离开。

心跳超时

  • 签名:无 心跳超时(子程序指针 回调)
  • 说明:注册「心跳超时」回调;传 0 清除。需先 置心跳。客户端与服务端均适用。
  • 参数一│子程序指针 回调: 形参固定为: 函数 名(整数 连接ID, 文本 IP, 整数 端口, 文本 IP端口) · 服务端超时后会踢掉该连接,并随后触发 客户离开。

WebSocket类/属性

共 10 条。

超时

  • 签名:整数 超时
  • 说明:当前超时毫秒数(无括号属性读,等价 取超时())。

错误信息

  • 签名:文本 错误信息
  • 说明:最近失败原因(无括号属性读)。

URL

  • 签名:文本 URL
  • 说明:最近一次连接 URL。

是否已连接

  • 签名:逻辑 是否已连接
  • 说明:是否仍保持已握手连接。

是否连接中

  • 签名:逻辑 是否连接中
  • 说明:异步连接是否进行中。

子协议

  • 签名:文本 子协议
  • 说明:当前/协商到的子协议。

关闭码

  • 签名:整数 关闭码
  • 说明:最近一次关闭状态码。

关闭原因

  • 签名:文本 关闭原因
  • 说明:最近一次关闭原因文本。

最大帧长

  • 签名:整数 最大帧长
  • 说明:单帧最大字节数。

TLS

  • 签名:逻辑 TLS
  • 说明:服务端是否已启用 TLS(等价 是否TLS())。

WebSocket类/方法

共 59 条。

置超时

  • 签名:无 置超时([整数 毫秒=30000])
  • 说明:设置连接/收发超时(毫秒)。
  • 参数一│[整数 毫秒=30000]: >0 生效;≤0 时回退为 30000。

取超时

  • 签名:整数 取超时()
  • 说明:取当前超时(毫秒)。

启动

  • 签名:逻辑 启动(整数 端口, [文本 绑定地址="0.0.0.0"])
  • 说明:启动 WebSocket 服务端监听。明文 ws;wss 须先 置TLS(真) 并 置TLS证书。
  • 参数一│整数 端口: 1~65535。
  • 参数二│[文本 绑定地址=”0.0.0.0”]: 本机联调常用 127.0.0.1。

监听

  • 签名:逻辑 监听(整数 端口, [文本 绑定地址="0.0.0.0"])
  • 说明:同「启动」(兼容旧名)。

停止

  • 签名:无 停止()
  • 说明:停止监听并断开全部客户端。

停止监听

  • 签名:无 停止监听()
  • 说明:同「停止」。

关闭全部

  • 签名:无 关闭全部()
  • 说明:断开全部已连接客户端,但继续监听新连接(≠ 停止)。

断开

  • 签名:无 断开(整数 连接ID)
  • 说明:踢掉指定客户端。
  • 参数一│整数 连接ID: 来自 客户进入/数据到达。

置最大客户端数

  • 签名:无 置最大客户端数([整数 上限=0])
  • 说明:限制服务端同时在线客户端数;超限拒绝新接入。须在 启动 前设置。
  • 参数一│[整数 上限=0]: 0=不限制;>0 为最大连接数。

取最大客户端数

  • 签名:整数 取最大客户端数()
  • 说明:取最大客户端数上限;0 表示不限制。

置路径

  • 签名:无 置路径([文本 路径=""])
  • 说明:服务端握手路径白名单。空=不限制;多路径用; 分隔(如 “/chat;/ws”)。须在 启动 前。
  • 参数一│[文本 路径=”“]: 请求路径(不含查询串);空=允许任意路径。

取路径

  • 签名:文本 取路径()
  • 说明:取当前握手路径白名单配置。

置允许来源

  • 签名:无 置允许来源([文本 来源列表=""])
  • 说明:服务端 Origin 白名单。空=不校验;”*”=任意;多来源用; 分隔。须在 启动 前。
  • 参数一│[文本 来源列表=”“]: 如 “https://www.yddphp.cn;http://127.0.0.1:8080”。 空=不检查 Origin 头;非空时 Origin 必须命中其一(大小写不敏感)。

取允许来源

  • 签名:文本 取允许来源()
  • 说明:取当前 Origin 白名单配置。

广播

  • 签名:整数 广播(文本 数据)
  • 说明:向全部已握手客户端发文本帧;返回成功个数。

广播字节集

  • 签名:整数 广播字节集(字节集 数据)
  • 说明:向全部客户端发二进制帧。

是否在监听

  • 签名:逻辑 是否在监听()
  • 说明:服务端是否正在监听。

是否已启动

  • 签名:逻辑 是否已启动()
  • 说明:同「是否在监听」。

取端口

  • 签名:整数 取端口()
  • 说明:服务端监听端口。

取绑定地址

  • 签名:文本 取绑定地址()
  • 说明:服务端绑定地址。

取客户端数

  • 签名:整数 取客户端数()
  • 说明:当前已握手客户端数量。

取连接ID列表

  • 签名:通用 取连接ID列表()
  • 说明:全部客户端连接 ID。

置请求头

  • 签名:逻辑 置请求头(文本 名, 文本 值)
  • 说明:设置握手请求头(须在 连接 前)。
  • 参数一│文本 名: 头字段名。
  • 参数二│文本 值: 头字段值。

删除请求头

  • 签名:逻辑 删除请求头(文本 名)
  • 说明:删除已设置的握手请求头。
  • 参数一│文本 名: 头字段名。

清空请求头

  • 签名:无 清空请求头()
  • 说明:清空全部自定义握手请求头。

置子协议

  • 签名:无 置子协议([文本 协议=""])
  • 说明:设置 Sec-WebSocket-Protocol(须在 连接 前)。
  • 参数一│[文本 协议=”“]: 子协议名;空文本表示不协商。

取子协议

  • 签名:文本 取子协议()
  • 说明:取当前/协商到的子协议。

置心跳

  • 签名:无 置心跳([整数 间隔毫秒=30000], [整数 超时毫秒=10000])
  • 说明:设置心跳。间隔≤0 关闭。客户端:空闲检测;服务端:定时发真实 Ping,超时踢连接并触发 心跳超时。
  • 参数一│[整数 间隔毫秒=30000]: 心跳间隔;≤0 关闭。
  • 参数二│[整数 超时毫秒=10000]: 等待 Pong/活动超时;≤0 回退 10000。

置最大帧长

  • 签名:无 置最大帧长([整数 字节=1048576])
  • 说明:单帧最大字节数(防超大帧)。
  • 参数一│[整数 字节=1048576]: 默认 1MB;≤0 回退 1MB。

取最大帧长

  • 签名:整数 取最大帧长()
  • 说明:取单帧最大字节数。

置代理

  • 签名:无 置代理(文本 地址, [文本 账号=""], [文本 密码=""])
  • 说明:设置 HTTP 代理(须在 连接 前)。
  • 参数一│文本 地址: 如 127.0.0.1:7890。
  • 参数二│[文本 账号=”“]: 代理账号,可省略。
  • 参数三│[文本 密码=”“]: 代理密码,可省略。

置TLS验证

  • 签名:无 置TLS验证([逻辑 验证=真])
  • 说明:wss 客户端是否验证服务端证书(默认真)。
  • 参数一│[逻辑 验证=真]: 假=不验证(仅测试环境)。

置TLS

  • 签名:无 置TLS([逻辑 启用=真])
  • 说明:服务端启用 TLS(wss)。须再 置TLS证书;客户端连 wss:// 无需此方法。
  • 参数一│[逻辑 启用=真]: 真=握手前先做 TLS。

置TLS证书

  • 签名:逻辑 置TLS证书(文本 证书文件, [文本 密码=""])
  • 说明:服务端加载 PFX/P12 证书(wss)。
  • 参数一│文本 证书文件: PFX/P12 路径。
  • 参数二│[文本 密码=”“]: 证书密码。

置TLS根证书

  • 签名:逻辑 置TLS根证书(文本 根证书文件)
  • 说明:服务端校验客户端证书时用的根证书(DER/CER);配合 置TLS要求客户端证书。
  • 参数一│文本 根证书文件: DER/CER 路径。

置TLS要求客户端证书

  • 签名:无 置TLS要求客户端证书([逻辑 要求=真], [逻辑 验证=真])
  • 说明:服务端要求客户端证书(mTLS)。
  • 参数一│[逻辑 要求=真]: 是否要求客户端证书。
  • 参数二│[逻辑 验证=真]: 是否用根证书/系统信任链校验。

是否TLS

  • 签名:逻辑 是否TLS()
  • 说明:服务端是否已 置TLS(真)(与 TCP类 对齐)。客户端连 wss 不看此值。

置TLS主机名

  • 签名:无 置TLS主机名(文本 主机名)
  • 说明:wss SNI/证书校验用的主机名。
  • 参数一│文本 主机名: 如 api.example.com。

连接

  • 签名:逻辑 连接(文本 URL或主机, [整数 端口=0], [整数 加密=0])
  • 说明:异步连接。1 参=完整 ws/wss URL;≥2 参=主机+端口(加密≠0 用 wss,默认路径 /)。
  • 参数一│文本 URL或主机: 完整 URL,或仅主机名/IP。 参数二│[整数 端口=0]: 与主机联用;省略或 0 时须用完整 URL。 参数三│[整数 加密=0]: 非 0 则 wss://。

连接_同步

  • 签名:逻辑 连接_同步(文本 URL或主机, [整数 端口=0], [整数 加密=0])
  • 说明:阻塞连接至握手成功或超时。重载同「连接」(URL 或 主机+端口)。
  • 参数同「连接」。

发送

  • 签名:逻辑 发送([整数 连接ID], 文本 数据)
  • 说明:发送文本帧。服务端传连接ID;客户端省略连接ID只传文本。
  • 参数一│[整数 连接ID]: 服务端必填;客户端省略。
  • 参数二│文本 数据: 要发送的文本(客户端作参数一)。

发送字节集

  • 签名:逻辑 发送字节集([整数 连接ID], 字节集 数据)
  • 说明:发送二进制帧。服务端传连接ID;客户端省略。
  • 参数一│[整数 连接ID]: 服务端必填;客户端省略。
  • 参数二│字节集 数据: 原始数据(客户端作参数一)。

发送Ping

  • 签名:逻辑 发送Ping([整数 连接ID], [字节集 载荷])
  • 说明:发送 Ping 控制帧。服务端须带连接ID;客户端无参(WinHTTP 占位,兼容保留)。
  • 参数一│[整数 连接ID]: 服务端目标连接;客户端省略。
  • 参数二│[字节集 载荷]: 可选;服务端可只传连接ID。

接收

  • 签名:文本 接收()
  • 说明:同步等待下一条文本消息(配合 连接_同步)。

接收字节集

  • 签名:字节集 接收字节集()
  • 说明:同步等待下一条二进制消息。

关闭

  • 签名:无 关闭([整数 状态码=1000], [文本 原因=""])
  • 说明:主动关闭连接(发送 Close 帧)。
  • 参数一│[整数 状态码=1000]: WebSocket 关闭码,默认 1000 正常关闭。
  • 参数二│[文本 原因=”“]: 关闭原因,可省略。

重置

  • 签名:无 重置()
  • 说明:关闭并恢复默认(超时等);不清回调。

是否已连接

  • 签名:逻辑 是否已连接()
  • 说明:是否仍保持已握手连接。

是否连接中

  • 签名:逻辑 是否连接中()
  • 说明:异步 连接 是否仍在进行。

取URL

  • 签名:文本 取URL()
  • 说明:取最近一次连接 URL。

取远程IP

  • 签名:文本 取远程IP()
  • 说明:取连接目标主机(URL 解析缓存;同 取客户IP)。

取远程端口

  • 签名:整数 取远程端口()
  • 说明:取连接目标端口(同 取客户端口)。

取远程地址

  • 签名:文本 取远程地址()
  • 说明:取「主机:端口」(同 取客户地址)。

取客户IP

  • 签名:文本 取客户IP([整数 连接ID])
  • 说明:取对端 IP。服务端传连接ID;客户端省略(同 取远程IP)。
  • 参数一│[整数 连接ID]: 服务端;客户端可省略。

取客户端口

  • 签名:整数 取客户端口([整数 连接ID])
  • 说明:取对端端口。服务端传连接ID;客户端省略。
  • 参数一│[整数 连接ID]: 服务端;客户端可省略。

取客户地址

  • 签名:文本 取客户地址([整数 连接ID])
  • 说明:取「IP:端口」。服务端传连接ID;客户端省略。
  • 参数一│[整数 连接ID]: 服务端;客户端可省略。

取错误

  • 签名:文本 取错误()
  • 说明:取最后一次失败原因;也可用属性 ws.错误信息。

取关闭码

  • 签名:整数 取关闭码()
  • 说明:取最近一次关闭状态码。

取关闭原因

  • 签名:文本 取关闭原因()
  • 说明:取最近一次关闭原因文本。

易错对照

错误 正确
类型写成 WebSocket 必须「WebSocket类」

相关

TCP类 · HTTP类 · JSON类