更新记录

1.0.4(2026-06-13)

  • 修复 Web 端 WebSocket 断开/重连逻辑
  • 修复 Web 端 SignalR 握手时序(不再提前标记 connected)
  • 修复 Web 端 SSE EventSource 误报错误

平台兼容性

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

支持 MQTTWebSocketSignalRSSE 四种协议的 uni-app UTS 实时消息插件。

支持平台

协议 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)

开发文档

隐私、权限声明

1. 本插件需要申请的系统权限列表:

- android.permission.INTERNET - android.permission.ACCESS_NETWORK_STATE

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据,仅用于与指定服务器建立实时通信

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。