更新记录

0.2.1(2026-09-14) 下载此版本

  1. 修复 build.gradle 中私有路径 flatDir 引用(../../../crm_app_android_native/app/libs),改为标准 fileTree 依赖
  2. SseManager 增加 AtomicBoolean closed 状态机:close() 幂等,buildAndConnect() 加 synchronized,避免重复 close 抛异常
  3. SseManager 重连退避策略增加 60 秒上限:1s → 2s → 4s → ... → 60s,避免重连风暴
  4. SseManager headers null 保护:entry.getKey()/getValue() 为 null 时跳过
  5. SseManager 清理 debug 阶段残留的 console.log 调用
  6. SseClientModule 所有 @UniJSMethod 方法增加 synchronized
  7. SseClientModule connect() 时若已有 manager 则先关闭再创建新实例
  8. SseClientModule toMap() 改用 optString(key, null) 替代 getString,避免 NPE
  9. dist/index.esm.js / dist/index.umd.js 增加 isTerminalType 判断
  10. JS SDK 用户 onopen/onmessage/onerror 回调 try/catch 包裹
  11. JS SDK headers 重置使用 Object.assign
  12. 增加完整 readme.md:API 表、事件说明、Options 参数文档
  13. 打包时排除 .gradle.ideabuildgradle/gradlew*local.propertiessse-client-android-release.aar 等冗余文件

0.2(2026-01-12) 下载此版本

修改目录结构

0.1(2025-12-23) 下载此版本

API

  • createSseClient(options) 创建客户端
    • url:SSE 地址(默认 http://localhost/sse
    • headers:对象,可选
    • reconnectInterval:首次重连间隔 ms,默认 2000
    • maxRetries:最大重试次数,默认 10
    • heartbeatInterval:心跳检测间隔 ms,默认 15000
    • heartbeatTimeout:若超时时间内无事件则重连,默认 20000
    • throttleMs:事件分发节流,默认 0(关闭)
  • connect() 发起连接
  • close() 关闭连接
  • onEvent(callback) 监听事件,事件对象:
    • { type: 'open' | 'message' | 'error' | 'closed' | 'retry', data, lastEventId }
  • setHeaders(headers) 运行时更新请求头

发布说明

  • 仅支持 APP 端(Android 原生实现),无鉴权逻辑,安全策略由业务自行处理
  • 未做浏览器兼容性处理,亦无 iOS 版本
  • 默认 SSE 地址为 http://localhost/sse,请在调用时传入真实地址
查看更多

平台兼容性

uni-app(4.45)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

其他

多语言 暗黑模式 宽屏模式

SSE Client(DCloud 原生插件)

原生 Java 实现的 SSE 客户端,适配 uni-app APP 端,支持自动重连、心跳检测、自定义事件分发、节流与断网重连。提供 JS SDK(ESM/UMD)与最小示例页面,适合发布到 DCloud 插件市场。

功能特性

  • 原生 OkHttp SSE 实现,连接与事件分发在原生层完成
  • 自动重连(指数退避可配置)、最大重试次数可配置
  • 心跳超时检测,超时后自动重连
  • 自定义事件分发,支持节流(防抖)
  • 断网检测,恢复后自动重连

目录结构

plugins/sse-client
├─ android/                # 原生源码(可直接集成)
├─ dist/                   # JS SDK 产物(ESM/UMD)
├─ src/                    # JS SDK 源码
├─ demo/                   # 简易示例页面
└─ package.json            # DCloud 插件描述

安装与集成

1) 将本目录作为 nativeplugins 导入 HBuilderX,或在 CLI 工程中放入 nativeplugins/sse-client。 2) Android 需依赖 OkHttp:

  • com.squareup.okhttp3:okhttp:4.12.0
  • com.squareup.okhttp3:okhttp-sse:4.12.0 3) JS 侧引入(任选其一):
    // ESM
    import { createSseClient } from '@/plugins/sse-client/dist/index.esm.js'
    // UMD
    const { createSseClient } = require('@/plugins/sse-client/dist/index.umd.js')

快速上手(示例)

demo/pages/index.vue 已提供可运行示例,核心用法:

const sse = createSseClient({
  url: 'http://localhost/sse',
  reconnectInterval: 2000,
  maxRetries: 8,
  heartbeatInterval: 15000,
  heartbeatTimeout: 20000,
  throttleMs: 300
})

onMounted(() => {
  sse.onEvent(evt => {
    console.log('SSE event', evt)
  })
  sse.connect()
})

onUnmounted(() => {
  sse.close()
})

API

  • createSseClient(options) 创建客户端
    • url:SSE 地址(默认 http://localhost/sse
    • headers:对象,可选
    • reconnectInterval:首次重连间隔 ms,默认 2000
    • maxRetries:最大重试次数,默认 10
    • heartbeatInterval:心跳检测间隔 ms,默认 15000
    • heartbeatTimeout:若超时时间内无事件则重连,默认 20000
    • throttleMs:事件分发节流,默认 0(关闭)
  • connect() 发起连接
  • close() 关闭连接
  • onEvent(callback) 监听事件,事件对象:
    • { type: 'open' | 'message' | 'error' | 'closed' | 'retry', data, lastEventId }
  • setHeaders(headers) 运行时更新请求头

发布说明

  • 仅支持 APP 端(Android 原生实现),无鉴权逻辑,安全策略由业务自行处理
  • 未做浏览器兼容性处理,亦无 iOS 版本
  • 默认 SSE 地址为 http://localhost/sse,请在调用时传入真实地址

许可

MIT

隐私、权限声明

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

网络相关权限

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

插件不采集任何数据

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

许可协议

MIT协议

暂无用户评论。