更新记录
1.0.6(2025-09-01)
- 优化Android关闭socket
 
1.0.5(2025-08-23)
- 优化关闭问题
 
1.0.4(2025-08-08)
- 修复Android多次连接时偶尔出现空指针问题
 
平台兼容性
| Android | Android CPU类型 | iOS | 
|---|---|---|
| 适用版本区间:4.4 - 12.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | 适用版本区间:9 - 15 | 
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
 - 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
 - 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
 - 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
 - 开发完毕后正式云打包
 
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios    
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
功能
- 支持socket客户端和socket服务端
 - 支持十六进制、ASCII、iso、utf-8、utf-16等多种字符格式传输
 - 客户端支持连接多个socket服务端、服务端支持开启多个端口服务
 - 支持后台运行
 
推荐大家使用新版本socket插件https://ext.dcloud.net.cn/plugin?name=wrs-uts-socket
接入步骤
如不了解原生插件接入步骤的同学请参考: https://www.jianshu.com/p/830ccc503e29 或 https://blog.csdn.net/wenrisheng/article/details/124057700
socket客户端
var socket = uni.requireNativePlugin("wrs-socket");
- 设置回调
 
            // 设置socket客户端回调
            socket.setCallback((resp) => {
                var opt = resp.opt;
                this.showMsg(JSON.stringify(resp));
                switch (opt) {
                    // 连接成功
                    case "onConnectSuc":
                    var serverID = resp.serverID;
                    this.serverID = serverID;
                        break;
                        // 连接失败
                    case "onConnectFail":
                        break;
                        // 收到数据
                    case "onReceiveData":
                        break;
                        // 数据发送成功
                    case "onWriteDataSuc":
                        break;
                        // 数据发送失败
                    case "onWriteDataSucFail":
                        break;
                    default:
                        break;
                }
            });
- 连接服务端,连接结果通过回调返回,如果需要连接多个服务端可以调用多次,通过ip和port来判定唯一
 
                socket.connect({
                    ip: this.ip, // 服务端IP
                    port: parseInt(this.port), // 服务端port
                    receiveSize: 1024,// 单次接收最大数据,单位byte
                    connectTimeout: 5000, // 连接超时时间,android的单位是毫秒,iOS的单位是秒
                    dataType: -1, // 接收的数据类型, -1: 不进行转换,以原始数据接收 0: 以十六进制接收,此时data数据为十六进制字符串或整型数组 1:以字符编码接收,此时已charsetName设置的编码转为字符串
                    charsetName: "UTF_8", // 字符编码, 当dataType为1时生效,常用编码为:ISO_8859_1、US_ASCII、UTF_16、UTF_16BE、UTF_16LE、UTF_8
                });
- 发送数据
 
                socket.sendData({
                    serverID: this.serverID, // 服务端IP
                    data: this.data,
                    dataType: -1, // 发送数据类型, -1: 不进行转换,以原始数据发送 0: 以十六进制发送,此时data数据为十六进制字符串或整型数组 1:以字符编码发送,此时data数据为字符串
                    charsetName: "UTF_8", // 字符编码, 当dataType为1时生效,常用编码为:ISO_8859_1、US_ASCII、UTF_16、UTF_16BE、UTF_16LE、UTF_8
                });
- 查询连接状态
 
var resp = socket.isConnected({
    serverID: "xxx" // 服务端ID,连接成功后会返回这个ID
});
if(isString(resp)) {
    resp = JSON.parse(resp);
}
var isConnected = resp.isConnected;
if(isConnected) {
} else {
}
- 断开连接
 
socket.disConnect({
    serverID: "xxx" // 服务端ID,连接成功后会返回这个ID
});
- 释放回收资源,当不需要使用socket的时候,释放回收内存资源
 
socket.releaseResource();
socket服务端
var socketServer = uni.requireNativePlugin("wrs-socketServer");
- 设置回调
 
            // 设置socket服务端回调
            socketServer.setCallback((resp) => {
                var opt = resp.opt;
                this.showMsg(JSON.stringify(resp));
                switch (opt) {
                    // 收到一个新的客服端连接
                    case "onAcceptNewClient":
                        var clientID = resp.clientID;
                        break;
                        // 收到客户端发来数据
                    case "onReceiveData":
                        var clientID = resp.clientID;
                        var serverID = this.socketServerServerID;
                        // 根据收到的数据处理业务,处理完成后发送处理结果给对方蓝牙,即:回复客户端
                        setTimeout(function() {
                            socketServer.sendData({
                                serverID: serverID,
                                clientID: clientID,
                                data: "2244BBAA"
                            });
                        }, 3000);
                        break;
                        // 有个连接断开了
                    case "onDisconnect":
                        break;
                        // 发送客户端数据成功
                    case "onWriteDataSuc":
                        break;
                        // 发送客户端数据失败
                    case "onWriteDataSucFail":
                        break;
                    default:
                        break;
                }
            });
- 启动服务,如果需要启动多个服务,可以调用多次,通过port来判定唯一
 
                socketServer.startServer({
                    port: parseInt(this.serverPort), // 服务端口
                    dataType: -1, // 接收的数据类型, -1: 不进行转换,以原始数据接收 0: 以十六进制接收,此时data数据为十六进制字符串或整型数组 1:以字符编码接收,此时已charsetName设置的编码转为字符串
                    charsetName: "UTF_8", // 字符编码, 当dataType为1时生效,常用编码为:ISO_8859_1、US_ASCII、UTF_16、UTF_16BE、UTF_16LE、UTF_8
                }, (resp) => {
                    this.showMsg(JSON.stringify(resp));
                    var flag = resp.flag;
                    if (flag) {
                        // 启动成功
                       this.socketServerServerID = resp.serverID;
                    } else {
                        // 启动失败,一般都是端口被占用引起的
                    }
                });
- 停止服务
 
                socketServer.stopServer({
                    serverID: this.socketServerServerID // 服务ID
                });
- 查询服务运行状态
 
var resp = socketServer.isRunning({
    serverID: "xxx" // 服务端ID,连接成功后会返回这个ID
});
if(isString(resp)) {
    resp = JSON.parse(resp);
}
var isRunning = resp.isRunning;
if(isRunning) {
} else {
}
- 发送数据
 
socketServer.sendData({
    serverID: "xxx", // 服务ID
    clientID: "xxx", // 客户端ID
    data: "2244BBAA",
    dataType: -1, // 发送数据类型, -1: 不进行转换,以原始数据发送 0: 以十六进制发送,此时data数据为十六进制字符串或整型数组 1:以字符编码发送,此时data数据为字符串
    charsetName: "UTF_8" // 字符编码, 当dataType为1时生效,常用编码为:ISO_8859_1、US_ASCII、UTF_16、UTF_16BE、UTF_16LE、UTF_8
});
- 断开某个客户端的连接
 
socketServer.disConnect({
    serverID: "xxx", // 服务ID
    clientID: "xxx" // 客户端ID
    })
- 释放回收资源,当不需要使用socketServer的时候,释放回收内存资源
 
socketServer.releaseResource();
组件文档:https://www.jianshu.com/p/87606a8eaf2c 支持定制,联系方式 QQ:252797991

                                                                    
                                                                        收藏人数:
                                    
                                                        购买(
                                                                                                                试用
                                                    
                                            使用 HBuilderX 导入示例项目
                                        
                                        赞赏(0)
                                    
                                            
 下载 1061
                
 赞赏 0
                
            
                    下载 12286 
                
            
            
            
            
            
            
            
            
            
            
                        赞赏 7 
                    
            
            
            
            
                        
                                赞赏
                            
            
京公网安备:11010802035340号