更新记录
1.0.8(2026-07-15)
打包报错提示
1.0.7(2026-07-14)
更新readme
1.0.6(2026-07-14)
更新示例项目
查看更多平台兼容性
uni-app(3.8.0)
| Vue2 | Vue2插件版本 | Vue3 | Vue3插件版本 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|---|
| √ | 1.0.4 | √ | 1.0.4 | √ | √ | √ | √ | √ | √ | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
uni-app x(3.8.0)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | × | × |
gs-realtime-message
支持 MQTT、WebSocket、SignalR、SSE 四种协议的 uni-app UTS 实时消息插件。
授权版本
本插件提供两种授权方式(在 DCloud 插件市场购买):
| 版本 | 说明 |
|---|---|
| 普通授权版 | 实现源码加密,仅 interface.uts / index.d.ts 可读,云端打包时自动解密 |
| 源码授权版 | 提供完整 .uts 源码,可自行修改与离线调试 |
插件作者发布说明见 PUBLISH.md。
使用者请通过统一入口导入,不要引用内部实现文件:
import { createConnection } from '@/uni_modules/gs-realtime-message'
支持平台
| 协议 | Android | iOS | H5/Web |
|---|---|---|---|
| WebSocket | ✅ | ✅ | ✅ |
| SSE | ✅ | ✅ | ✅ |
| MQTT | ✅ (tcp/ssl) | ✅ (tcp/ssl) | ⚠️ 仅 ws/wss |
| SignalR | ✅ | ✅ | ✅ |
注意:App 端需使用自定义基座或正式打包才能调用原生能力。
公网测试地址(演示页已配置)
| 协议 | 测试地址 | 说明 |
|---|---|---|
| WebSocket | wss://ws.vi-server.org/mirror |
回声服务器,发送什么返回什么 |
| SSE | https://stream.wikimedia.org/v2/stream/recentchange |
Wikimedia 公开事件流 |
| MQTT | ws://test.mosquitto.org:8080/mqtt |
公共 Mosquitto WebSocket |
| SignalR | http://localhost:5099/chat |
需先运行本地测试服务(见下) |
SignalR 公网几乎没有长期稳定的免费 Hub,请使用项目内本地服务联调。
启动 SignalR 本地测试服务
cd tools/signalr-test-server
dotnet run
演示页选 signalr,地址填 http://localhost:5099/chat,方法名填 Echo,连接后发送消息应收到回显。
快速开始
import { createConnection } from '@/uni_modules/gs-realtime-message'
// WebSocket 示例
const ws = createConnection({
protocol: 'websocket',
url: 'wss://ws.vi-server.org/mirror',
onOpen(res) {
console.log('已连接', res)
ws.send('Hello WebSocket')
},
onMessage(res) {
console.log('收到消息', res.data)
},
onError(res) {
console.error('连接错误', res.errMsg)
},
onClose(res) {
console.log('连接关闭', res.errMsg)
}
})
ws.connect()
MQTT 示例
const mqtt = createConnection({
protocol: 'mqtt',
url: 'ws://test.mosquitto.org:8080/mqtt',
// 也支持简写:test.mosquitto.org:8080/mqtt
// TCP 模式:tcp://test.mosquitto.org:1883
clientId: 'uniapp-client-001',
topics: ['test/topic'],
qos: 1,
onOpen() {
mqtt.send('Hello MQTT', { topic: 'test/topic', qos: 1 })
},
onMessage(res) {
console.log(`[${res.topic}] ${res.data}`)
}
})
mqtt.connect()
SignalR 示例
const signalr = createConnection({
protocol: 'signalr',
url: 'https://your-server.com/chathub',
accessToken: 'your-token',
// 额外查询参数(协商与 WebSocket 连接均会携带)
params: {
tenantId: '1001'
},
// 自定义请求头(协商请求)
headers: {
'X-Custom-Header': 'value'
},
onOpen() {
signalr.invoke('SendMessage', 'user', 'Hello SignalR')
},
onMessage(res) {
console.log(res.data)
}
})
signalr.connect()
说明:
accessToken会同时设置Authorization: Bearer请求头,并在 URL 中追加access_token参数(H5 WebSocket 无法自定义 Header,需依赖查询参数鉴权)。
SSE 示例
const sse = createConnection({
protocol: 'sse',
url: 'https://your-server.com/events',
// URL 查询参数(H5 端 EventSource 不支持自定义 Header,推荐用 params 传 token)
params: {
token: 'your-token'
},
// App 端可额外设置请求头
headers: {
Authorization: 'Bearer your-token'
},
onMessage(res) {
console.log('SSE:', res.data)
}
})
sse.connect()
API 说明
createConnection(options)
创建实时消息连接实例,返回 RealtimeClient 对象。
RealtimeClient 方法
| 方法 | 说明 |
|---|---|
connect() |
发起连接 |
disconnect(options?) |
断开连接 |
reconnect(options?) |
手动重试连接 |
isConnected() |
是否已连接 |
getState() |
获取连接状态 |
send(data, options?) |
发送消息 |
subscribe(topic, qos?) |
订阅 MQTT 主题 |
unsubscribe(topic) |
取消 MQTT 订阅 |
invoke(method, ...args) |
调用 SignalR 服务端方法 |
ConnectOptions 参数
| 参数 | 类型 | 说明 |
|---|---|---|
| protocol | 'websocket' \| 'sse' \| 'mqtt' \| 'signalr' |
协议类型 |
| url | string | 服务器地址 |
| clientId | string | MQTT 客户端 ID |
| username / password | string | 认证信息 |
| headers | object | 自定义请求头(SSE / SignalR) |
| params | object | URL 查询参数(SSE / SignalR) |
| topics | string[] | MQTT 自动订阅主题 |
| accessToken | string | SignalR Bearer Token |
| autoReconnect | boolean | 自动重连,默认 true |
| reconnectInterval | number | 重连间隔(ms),默认 3000 |
| maxReconnectAttempts | number | 最大重连次数,默认 10 |
disconnect(options?)
断开当前连接。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| emitClose | boolean | true | 是否触发 onClose 回调 |
| disableAutoReconnect | boolean | true | 是否禁用后续自动重连 |
// 静默断开,不触发 onClose
client.disconnect({ emitClose: false })
// 断开后仍允许自动重连(适用于临时切换页面等场景)
client.disconnect({ disableAutoReconnect: false })
reconnect(options?)
手动重试连接:先释放当前传输层,再重新发起连接。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| resetRetryCount | boolean | true | 是否重置自动重连计数 |
| delay | number | 0 | 重连前等待时间(毫秒) |
// 立即重连
client.reconnect()
// 3 秒后重连,并重置重试计数
client.reconnect({ delay: 3000, resetRetryCount: true })
依赖说明
Android
- OkHttp 4.12.0(WebSocket / SSE / SignalR)
- HiveMQ MQTT Client 1.3.3(支持 tcp/ssl/ws/wss)
iOS
- CocoaMQTT 2.1.8(MQTT)
- URLSession WebSocket(WebSocket / SignalR / SSE)

收藏人数:
购买源码授权版(
试用
使用 HBuilderX 导入示例项目
赞赏(1)
下载 26
赞赏 1
下载 12466226
赞赏 1936
赞赏
京公网安备:11010802035340号