更新记录

1.0.0(2026-11-05) 下载此版本

1.0.0

  • 首个版本,功能可用

平台兼容性

pk-socket-pro TCP/UDP 双协议通信套件

TCP/UDP 双协议通信:粘包拆包(长度前缀 / 分隔符 / 定长)、心跳保活、指数退避重连、UDP 广播与 seq 应答匹配、连接状态机与关闭原因归一。

双层架构:JS 协议层(拆包 / 心跳 / 重连 / 应答,可在 Node 单测)+ 原生薄壳(Kotlin / Swift,只做 fd 收发与回调)。竞品痛点「安卓连上就断」「UDP 广播发得出收不回」「粘包没人管」全部在协议层根治。

5 分钟接入

import sk from '@/uni_modules/pk-socket-pro/js_sdk/index.js'
// 接原生通道(自定义基座里已集成了 PKSocketPro 原生模块)
const conn = sk.open({
  protocol: 'tcp', host: '127.0.0.1', port: 9123,
  framing: { strategy: 'length_prefix', opts: { lengthBytes: 4 } },
  heartbeat: { data: 'ping', interval: 15000, deadFactor: 2.5 },
  reconnect: { base: 1000, max: 30000, maxRetries: 10 }
})
conn.on('open', () => console.log('已连接'))
conn.on('message', (m) => console.log('收到', m.text))   // m.bytes 为原始 Uint8Array
conn.write('hello')
conn.close()

UTS 通道接入(推荐,跨端一致):

import sk from '@/uni_modules/pk-socket-pro/js_sdk/index.js'
import { createSocket } from '@/uni_modules/pk-socket-pro/utssdk/index.uts'
sk.open({ protocol: 'tcp', host, port, framing: { strategy: 'delimiter', opts: { delimiter: '\n' } },
  _socketFactory: createSocket })

API 全表

方法 签名 说明
open open(opts) 打开连接。返回 { ok };失败返回 { ok:false, error }
write write(data, { queue }) 发送。tcp 自动组帧;未连接入离线队列(queue:false 直接拒绝)
writeBroadcast writeBroadcast(data, port) UDP 广播(需 broadcast.enabled)
request await request(data, { ttl }) UDP 请求-应答:自动分配 seq,超时抛 E-SOCK-08
close close({ reason }) 主动关闭(不重连),返回丢失的离线消息数
getState getState() idle/connecting/open/reconnecting/closing/closed/error
getStats getStats() { sent, received, reconnects, lastError, pending, queueSize, ... }
on/once/off on(event, fn) 订阅 open/message/close/error/reconnect/state/ack/timeout
setChannelFactory setChannelFactory(fn) 测试 / 自定义通道注入
reset reset() 重置内部状态

拆包策略

策略 适用 说明
length_prefix 二进制协议 首部 N 字节(默认 4)大端声明长度;天然解决粘包 / 半包
delimiter 文本行协议 以分隔符(默认 \n)切分,余下残片留待下次
fixed 定长报文 固定长度分块,payload 超长抛 E-SOCK-03

关闭原因(决定要不要自动重连)

close 事件携带归一后的 { reason, retry }:

reason 含义 是否重连
peer_closed 对端关闭(含 code 1000) ✅
timeout 心跳假死 / 读写超时 ✅
network_lost 网络切换 / 无网络 ✅
fd_invalid 句柄失效(移动网络切换常见) ✅
manual 用户主动关闭 ❌
error 其它 ❌

错误码

码 含义
E-SOCK-01 非法状态迁移
E-SOCK-02 拆包策略 / 参数非法
E-SOCK-03 单帧超长
E-SOCK-04 seq 生成异常
E-SOCK-05 定长编码 payload 超长
E-SOCK-06 仅支持 tcp / udp
E-SOCK-07 通道未就绪(未打自定义基座 / 未连接就收发)
E-SOCK-08 UDP 应答超时
E-SOCK-09 网络丢失
E-SOCK-10 当前环境 / 通道不支持该能力

真机验收清单(需你配合)

  • [ ] 真机 TCP 连接后杀掉服务端 → reconnecting 事件触发,退避后重连成功
  • [ ] 切 4G↔WiFi → fd_invalid 触发重连,业务无感
  • [ ] UDP 广播:设备 A 广播,设备 B 收到并 request 拿到 ack
  • [ ] 高频率粘包(一次 recv 多帧)→ 逐条 message 正确拆分
  • [ ] 弱网半包(一次 recv 不足一帧)→ 缓冲至下个包补齐

体积说明

不内置任何第三方 so / SDK,原生壳纯 Kotlin / Swift 实现,UTS 通道零额外依赖,云打包不受影响。

隐私、权限声明

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

无

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

插件不采集任何数据

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

无

许可协议

MIT协议

暂无用户评论。