x-sse-s SSE推送
进程级单连接 SSE。new SSEClientApp() 只是门面,全局只保持一条活连接;再次 create 会断开旧连接,监听保留。
微信小程序没有流式 HTTP,connect 会报 1008。 Web / 微信不支持自定义证书,applyTls 为空实现。
兼容性
| Harmony | IOS | Android | WEB | 小程序 |
|---|---|---|---|---|
| 支持 | 支持 | 支持 | 支持 | x |
鸿蒙需要 ohos.permission.INTERNET。
调用
ts
import { SSEClientApp, xSSEOptions } from "@/uni_modules/x-sse-s"
const sse = new SSEClientApp()
sse.onMessage((msg: string) => {
console.log(msg)
})
sse.create({
method: "get",
url: "https://testsse.element-ui-x.com/api/sse",
header: {},
rejectUnauthorized: true
} as xSSEOptions)
sse.connect()构造时传入 xSSEOptions 等价于立刻 create,兼容旧写法:
ts
const sse = new SSEClientApp({
method: "post",
url: "https://testsse.element-ui-x.com/api/sse",
header: { token: "token" }
})
sse.setBody({ prompt: "hi" })
sse.connect()方法
| 名称 | 参数 | 说明 |
|---|---|---|
| create | xSSEOptions | 配置并替换当前连接,不自动 connect |
| connect | headers? | 连接 SSE;可临时合并 header |
| setBody | string | ArrayBuffer | UTSJSONObject | POST 时在 connect 前设置请求体 |
| disconnect | 无 | 断开,保留监听 |
| destroy | 无 | 断开并清空监听 |
| isConnected | 无 | 是否已打开 |
| getState | 无 | wait / opening / open / closed / error |
| applyTls | SSE_TLS_OPTS | 写入证书配置,下次 create 生效。Web / 微信空实现 |
| onOpen / onError / onClosed / onMessage | 回调 | 兼容旧 API,换连接时保留 |
| addEventListener | open / error / closed / message | 返回监听 id;error / message 的 data 为字符串 |
| removeEventListener | id | 按 id 移除 |
error 事件的 data 为 errCode:errMsg。onError 仍无参,兼容旧代码。
证书
Android / iOS / Harmony 从各端插件资源目录读取证书,更换后重新打包:
| 平台 | 目录 |
|---|---|
| Android | utssdk/app-android/assets/ |
| iOS | utssdk/app-ios/Resources/ |
| Harmony | utssdk/app-harmony/resources/rawfile/ |
| 字段 | 说明 |
|---|---|
| certName | CA:ca.crt / ca.pem。若为 .p12 则作为客户端证书 |
| clientCertName | 客户端证书。Android/iOS 用 p12;Harmony 用 pem |
| clientKeyName | Harmony mTLS 私钥 pem |
| certPassword | p12 或私钥密码 |
| rejectUnauthorized | 默认 true |
| serverName | SNI,默认从 url 解析主机名 |
仓库自带示例 x-sse-ca.crt(公共根 CA,文件名避开与其它插件冲突)。私有 CA / mTLS 请替换同名文件或改 certName 后重新出包。Web / 微信走系统信任链,自定义证书无效。
错误码
| 码 | 含义 |
|---|---|
| 1001 | 系统错误 |
| 1002 | 参数错误 |
| 1005 | 连接超时 |
| 1008 | 当前平台不支持此协议或证书 |
| 1010 | 尚未 create |
| 1011 | 证书加载失败 |
| 1012 | 证书校验失败 |
注意事项
使用前一定要打基座才可用,一定要在页面上先引用,再去打基座。 如果你 mac 开发,ios 可以不用打基座,能直接使用(但前提是你要配置好原生开发环境,否则一样要打包)。 如果你是开发安卓,不管是 mac、win 电脑都要打包基座才能使用。
版本
版权归 https://xui.tmui.design 你不得修改及二次开发,仅供 TMUI4 会员商用使用。不得转给非 VIP 会员使用,一经查实数倍赔偿,并追究法律责任。
更新日志
1.1.1(2026-08-16)
- 鸿蒙禁止 for-in,header 遍历改为 UTSJSONObject.keys
1.1.0(2026-08-16)
- 改为进程级单连接:再次 create 自动断开旧实例,监听保留
- 新增 destroy / getState / applyTls / addEventListener;证书从各端资源目录加载
- 鸿蒙去掉 HAR,改为原生 HTTP 流式 SSE
- Web GET 改为 fetch,支持自定义 header;微信保持同签名并返回 1008
1.0.3(2026-07-27)
- 安卓和ios事件移到主线程
1.0.3(2026-06-05)
- 新增支持post,get请求方法,post时允许使用方法setBody来设置向服务器发送body数据体
1.0.2(2025-07-25)
- 兼容原生鸿蒙
1.0.1(2025-05-22)
参数修改,支持header
1.0.0(2025-01-07)
连接sse服务器
