更新记录

1.0.0(2026-07-01) 下载此版本

初始版本


平台兼容性

uni-app(4.25)

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

uni-app x(4.25)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - 5.0 12 12 -

其他

多语言 暗黑模式 宽屏模式
×

xyz-socket

uni-app x 跨平台 TCP/UDP Socket 插件,支持 Android、iOS、HarmonyOS。

安装

xyz-socket 目录复制到项目的 uni_modules 目录下即可。

基本用法

import { createTcpSocket, createUdpSocket } from "@/uni_modules/xyz-socket"

TCP

import {
  createTcpSocket,
  CreateTcpSocketOptions,
  TcpConnectOptions,
  TcpSendOptions,
  TcpCloseOptions,
} from "@/uni_modules/xyz-socket"

// 1. 创建 TCP Socket
const tcpTask = createTcpSocket({
  host: "192.168.1.100",
  port: 8089,
  timeout: 10000,
  success: (res) => { console.log(res.errMsg) },
  fail: (err) => { console.error(err.errCode, err.errMsg) },
} as CreateTcpSocketOptions)

// 2. 注册事件回调
tcpTask.onConnect((result) => {
  console.log("Connected:", result.localAddress, result.localPort)
})

tcpTask.onMessage((result) => {
  const bytes = new Uint8Array(result.data)
  const msg = String.fromCharCode(...bytes)
  console.log("Received:", msg)
})

tcpTask.onClose((result) => {
  console.log("Closed, isLocal:", result.isLocal)
})

tcpTask.onError((result) => {
  console.error("Error:", result.errMsg)
})

// 3. 发起连接
tcpTask.connect({
  success: (res) => { console.log("connect ok") },
  fail: (err) => { console.error("connect fail:", err.errCode) },
} as TcpConnectOptions)

// 4. 发送数据(字符串或 ArrayBuffer)
tcpTask.send({
  data: "Hello Server",
  success: (res) => { console.log("send ok") },
  fail: (err) => { console.error("send fail:", err.errCode) },
} as TcpSendOptions)

// 5. 关闭连接
tcpTask.close({
  success: (res) => { console.log("close ok") },
} as TcpCloseOptions)

UDP

import {
  createUdpSocket,
  CreateUdpSocketOptions,
  UdpBindOptions,
  UdpSendOptions,
  UdpCloseOptions,
} from "@/uni_modules/xyz-socket"

// 1. 创建 UDP Socket
const udpTask = createUdpSocket({
  success: (res) => { console.log(res.errMsg) },
  fail: (err) => { console.error(err.errCode) },
} as CreateUdpSocketOptions)

// 2. 注册事件回调
udpTask.onMessage((result) => {
  const bytes = new Uint8Array(result.data)
  const msg = String.fromCharCode(...bytes)
  console.log("From:", result.remoteInfo.address, result.remoteInfo.port, "Data:", msg)
})

udpTask.onClose((result) => {
  console.log("Closed:", result.errMsg)
})

udpTask.onError((result) => {
  console.error("Error:", result.errMsg)
})

// 3. 绑定本地端口(0 为自动分配)
udpTask.bind({
  port: 0,
  success: (res) => { console.log("bind ok") },
  fail: (err) => { console.error("bind fail:", err.errCode) },
} as UdpBindOptions)

// 4. 发送数据报
udpTask.send({
  data: "Hello UDP",
  host: "192.168.1.100",
  port: 8090,
  success: (res) => { console.log("send ok") },
  fail: (err) => { console.error("send fail:", err.errCode) },
} as UdpSendOptions)

// 5. 关闭
udpTask.close({
  success: (res) => { console.log("close ok") },
} as UdpCloseOptions)

API

createTcpSocket(options)

创建 TCP Socket 实例。

参数 CreateTcpSocketOptions:

属性 类型 必填 说明
host string 远程主机 IP 或主机名
port number 远程端口号 (1-65535)
timeout number 连接超时时间(毫秒),默认 30000
success function 创建成功回调
fail function 创建失败回调
complete function 完成回调

返回值: TcpSocketTask

TcpSocketTask

方法 说明
connect(options?) 发起 TCP 连接
send(options) 发送数据(string 或 ArrayBuffer)
close(options?) 关闭连接
onConnect(callback) 注册连接建立回调
onMessage(callback) 注册数据接收回调
onClose(callback) 注册连接关闭回调
onError(callback) 注册错误回调

createUdpSocket(options)

创建 UDP Socket 实例。

参数 CreateUdpSocketOptions:

属性 类型 必填 说明
success function 创建成功回调
fail function 创建失败回调
complete function 完成回调

返回值: UdpSocketTask

UdpSocketTask

方法 说明
bind(options) 绑定本地端口,开始接收数据报
send(options) 发送数据报到指定主机和端口
close(options?) 关闭 UDP Socket
onMessage(callback) 注册数据报接收回调
onClose(callback) 注册关闭回调
onError(callback) 注册错误回调

UdpBindOptions:

属性 类型 必填 说明
port number 本地端口(0 为自动分配,1-65535 为指定)

UdpSendOptions:

属性 类型 必填 说明
data any 发送数据(string 或 ArrayBuffer)
host string 目标主机 IP 或主机名
port number 目标端口号 (1-65535)

事件回调

TCP 事件

事件 回调参数 说明
onConnect { localAddress: string, localPort: number } 连接建立
onMessage { data: ArrayBuffer } 收到数据
onClose { isLocal: boolean } 连接关闭(isLocal 表示是否本地发起)
onError { errMsg: string } 错误

UDP 事件

事件 回调参数 说明
onMessage { data: ArrayBuffer, remoteInfo: { address: string, port: number } } 收到数据报
onClose { errMsg: string } Socket 关闭
onError { errMsg: string } 错误

错误码

TCP 错误码

错误码 说明
9001001 无效的 host 参数
9001002 无效的 port 参数
9001100 连接被拒绝
9001101 连接超时
9001102 已经处于连接状态
9001103 网络不可达
9001200 未连接状态
9001202 发送系统错误
9001900 实例已关闭

UDP 错误码

错误码 说明
9002001 无效的端口号
9002100 端口已被占用
9002101 绑定系统错误
9002200 未绑定状态
9002201 无效的目标地址
9002202 发送系统错误
9002900 实例已关闭

注意事项

  • 模拟器中连接本机服务时,Android/Harmony 使用 10.0.2.2,iOS 使用 127.0.0.1
  • TCP 的 onMessage 回调中 dataArrayBuffer 类型,需要通过 Uint8Array 转换后使用
  • UDP 必须先 bind 后才能 send 和接收数据
  • 页面销毁时应调用 close() 释放资源
  • senddata 参数支持 string(自动 UTF-8 编码)或 ArrayBuffer

底层实现

平台 TCP 实现 UDP 实现
Android Java NIO SocketChannel + Selector Java NIO DatagramChannel + Selector
iOS CocoaAsyncSocket (GCDAsyncSocket) CocoaAsyncSocket (GCDAsyncUdpSocket)
HarmonyOS @ohos.net.socket @ohos.net.socket

隐私、权限声明

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

网络权限

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

插件不采集任何数据

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

许可协议

MIT协议

暂无用户评论。