更新记录

1.0.16(2026-10-20)

  1. 优化iOS 客户端connectTimeout处理

1.0.15(2026-09-30)

  1. 优化鸿蒙socket服务端

1.0.14(2026-09-29)

  1. 增加服务端断开某个客户端的接口server.disConnect
查看更多

平台兼容性

uni-app(4.07)

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

uni-app x(4.07)

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

其他

多语言 暗黑模式 宽屏模式 蒸汽模式
√ √ √ √

socket客户端和服务端,支持Android、iOS、鸿蒙

集成步骤:

  • 拷贝demo里的harmony-configs文件夹到项目根目录
  • 如需定制或咨询请点击插件标题上方的"进入交流群"私聊作者

接口文档


import {
    UTSSocketServer,
    UTSSocketClient,
    getIP,
    getNetworkInterfaces
} from "@/uni_modules/wrs-uts-socket"

    // 多个服务端请使用多个变量
    let server = new UTSSocketServer()
    // let server1 = new UTSSocketServer()
    // let server2 = new UTSSocketServer()

    // 多个客户端请使用多个变量
    let client = new UTSSocketClient()
// let client1 = new UTSSocketClient()
// let client2 = new UTSSocketClient()

客户端

  • 设置回调

client.onCallback((resp) => {
    let opt = resp.opt
    switch (opt) {
        case "onConnectSuc": {
            this.showMsg("连接成功")
        }
        break;
        case "onConnectFail": {
            this.showMsg("连接失败:" + JSON.stringify(resp))
        }
        break;
        case "onDisconnect":{
            this.showMsg("服务器断开连接:" + JSON.stringify(resp))
        }
        break;
        case "onReceiveData": {
            this.showMsg("收到数据:" + JSON.stringify(resp))
        }
        break;
        case "sendDataSuc": {
            this.showMsg("数据发送成功:" + JSON.stringify(resp))
        }
        break;
        case "sendDataFail": {
            this.showMsg("数据发送失败:" + JSON.stringify(resp))
        }
        break;
        default:
            break;
    }
})
  • 连接服务器

let params = {}
params.ip = this.ip
params.port = parseInt(this.port)
params.connectTimeout = 3000 // 毫秒
client.connect(params)
  • 发送数据

let params = {}
// data是十六进制数据,如果需要进制转换、ASCII、modbus、crc等,请使用插件https://ext.dcloud.net.cn/plugin?id=19206
params.data = [0x00, 0xFF]
// params.id = 1212 // 可选参数,数据id,如果传了id,发送成功后会回调这个id
client.sendData(params)
  • 异步发送数据

let params = {}
// data是十六进制数据,如果需要进制转换、ASCII、modbus、crc等,请使用插件https://ext.dcloud.net.cn/plugin?id=19206
params.data = [0x00, 0xFF]
// params.id = 1212 // 可选参数,数据id,如果传了id,发送成功后会回调这个id
client.sendDataAsyn(params)
  • 断开连接

client.disConnect()

服务端

  • 设置回调

server.onCallback((resp) => {
    // this.showMsg(JSON.stringify(resp))
    let opt = resp.opt
    switch (opt) {
        case "onStartSuc": {
            this.showMsg("服务启动成功")
        }
        break;
        case "onStartFail": {
            this.showMsg("服务启动失败:" + JSON.stringify(resp))
        }
        break;
        case "onNewClient": {
            this.showMsg("收到一个新的连接:" + JSON.stringify(resp))

        }
        break;
        case "onReceiveData": {
            this.showMsg("收到数据:" + JSON.stringify(resp))
        }
        break;
        case "onDisconnectClient": {
            this.showMsg("某个连接断开了:" + JSON.stringify(resp))
        }
        break;
        default:
            break;
    }
})
  • 启动服务

let params = {}
params.port = parseInt(this.serverPort)
params.cacheSize = 1024 // 仅支持Android,单次接收端最大数
server.start(params)
  • 停止服务

server.stop()
  • 发送数据

let params = {}
// data是十六进制数据,如果需要进制转换、ASCII、modbus、crc等,请使用插件https://ext.dcloud.net.cn/plugin?id=19206
params.data = [0x00, 0xFF]
// params.id = 1212 // 可选参数,数据id,如果传了id,发送成功后会回调这个id
params.clientId = "xxx"
server.sendData(params)
  • 异步发送数据

let params = {}
// data是十六进制数据,如果需要进制转换、ASCII、modbus、crc等,请使用插件https://ext.dcloud.net.cn/plugin?id=19206
params.data = [0x00, 0xFF]
params.clientId = "xxx"
// params.clientIds = [""] // 多个一起发送
// params.id = 1212 // 可选参数,数据id,如果传了id,发送成功后会回调这个id
server.sendDataAsyn(params)
  • 异步发送给多个客户端数据

    server.sendDataAsynGroup({
    data: [
        {
            clienId: "",
            data: [0x00, 0xFF]
        }
    ]
    })
  • 服务端断开某个客户端的连接


let clientId = "xxx"
server.disConnect(clientId)
  • 获取手机ip

// 获取IP
 getIP((resp)=>{
    let ip = resp.ip 
    if(ip) {
        const port = this.serverPort
        this.showMsg("IP:" + ip + " PORT:" + port)
    } else {
        this.showMsg("IP获取失败:"  + JSON.stringify(resp) + " PORT:" + port)
    }
})

// 获取所有口
// const result = getNetworkInterfaces()
// console.log(JSON.stringify(result))
  • 判断端口是否被占用
isPortBusy(parseInt(this.serverPort), (resp)=>{
    let flag = resp.flag
    if(flag) {
        this.showMsg("端口:" + this.serverPort + "被占用了")
    } else {
        this.showMsg("端口:" + this.serverPort + "没有被占用")
    }
})

隐私、权限声明

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

网络权限

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

插件不采集任何数据

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

无