更新记录
1.0.0(2025-09-08)
下载此版本
参考https://ext.dcloud.net.cn/plugin?id=6833,修改为uts版本,处理了杀掉后台不自动停止监听的问题,因使用uts对旧版本兼容差些,如果该问题不影响使用可以用原版有更好的兼容
平台兼容性
uni-app(4.76)
Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
√ |
√ |
× |
× |
√ |
√ |
√ |
× |
× |
微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
快应用-华为 |
快应用-联盟 |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
uni-app x(4.76)
Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
× |
× |
√ |
× |
× |
× |
zsl-udp
介绍
一个简单的支持安卓平台的,广播和接收 udp
数据的插件。
使用场景
- 服务端知道设备的 IP 之后,可以给设备发送消息,同时设备也可以给服务端发送消息
- 服务端给同个网断内的设备广播消息
- 客户端给同个网断内的设备互相广播
Demo
import zslUdp from '@/uni_modules/zsl-udp'
const udpClient = new zslUdp()
export default {
data: function() {
return {
socketPort: 10005,
}
},
onLoad() {
/**
* 如果需要使用 hexString, 请在 init 之前调用
* 之后会在返回数据多一个 hex 字段
*/
udpClient.setUseHex(true);
/**
* 设置接受的字节大小,单位是 byte,默认 1024
* 请按需设置,过大可能会影响性能,或导致奔溃
*/
udpClient.setByteSize(2048);
/**
* 在设备初始化,监听 10005 端口。
* 假设本设备 IP 为 192.168.2.35
* 那么服务端,或者其设备,就可以给 192.168.2.35:10005 发送消息了
*/
udpClient.init(this.socketPort, this.onSocketMsg, this.onSocketError);
},
methods: {
onSocketMsg(resData) {
// resData 的数据结构:{ host, port, data, hex }
console.log("接收到消息: " + resData);
// 收到消息如果想响应
udpClient.send({
host: resData.host,
port: resData.port,
data: JSON.stringify({code: 1, msg: "我收到消息啦~"}),
useHex: false, // 使用 hexString ,默认为 false
});
},
onSocketError(errMsg) {
console.error("socket 异常:" + errMsg);
},
},
onUnload() {
// 释放 socket,释放端口
udpClient.release();
}
}
使用文档
引入
// #ifdef APP-PLUS
import zslUdp from '@/uni_modules/zsl-udp'
const client = new zslUdp();
// #endif
初始化
/**
* 初始化
* @param listenPort 监听的端口
* @param (res) => {} 返回消息 res: {host: string, port: number, data: string, hex: string}
* @param (errMsg) => {} 异常消息
*/
client.init(listenPort, (res) => {
}, (errMsg) => {
});
发送消息
/**
* 发送消息
*/
client.send({
data: String,
port: number,
host: String, // 可选,不传默认为广播 255.255.255.255
useHex: Boolean, // 是否发送 hexString,默认 false
});
释放
/**
* 释放,拿到数据之后手动释放,不然会占用资源
*/
client.release();