const socket = {
|
/**
|
* 回调信息
|
*/
|
UDPSocket: null,
|
//单播流程
|
receivedStatus: () => {},
|
receivedMsgCallBack: () => {},
|
receivedHexMsgCallBack: () => {},
|
//广播流程
|
recBroadcastStatus: () => {},
|
recBroadcastMsgCallBack: () => {},
|
recBroadcastHexMsgCallBack: () => {},
|
|
/**
|
* 初始化连接UDP服务器
|
* @param {Object} ip UDP服务器IP
|
* @param {Object} port UDP服务器端口
|
* @param {Object} charsetname 字符集格式 //可不传,默认'UFT-8',可选'GBK'
|
*/
|
init(ip, port, charsetname) {
|
socket.UDPSocket = uni.requireNativePlugin('Aimer-UDPPlugin');
|
socket.connect(ip, port, charsetname);
|
},
|
|
connect(ip, port, charsetname) {
|
socket.UDPSocket.connect({
|
charsetname: charsetname, //可不选,默认UTF-8,可选'GBK'
|
ip: ip,
|
port: port
|
},
|
result => {
|
/**
|
* status : 0 连接成功
|
* status : 1 断开连接
|
* receivedMsg : 服务器返回信息
|
* receivedHexMsg : 服务器返回字节数组(单片机、智能家居等硬件数据交互)
|
*/
|
if (result.status) {
|
//连接状态
|
socket.receivedStatus(result.status);
|
}
|
if (result.receivedMsg) {
|
//服务器返回信息
|
socket.receivedMsgCallBack(result.receivedMsg);
|
}
|
if (result.receivedHexMsg) {
|
//Hex服务器返回信息
|
socket.receivedHexMsgCallBack(result.receivedHexMsg);
|
}
|
}
|
);
|
},
|
|
/**
|
* 客户端 发送字符串消息
|
* @param {Object} message 发送内容
|
* @param {Object} charsetname 字符集格式
|
*/
|
send(message, charsetname) {
|
socket.UDPSocket.send({
|
charsetname: charsetname, //可不选,默认UTF-8,可选'GBK'
|
message: message
|
});
|
},
|
|
/**
|
* 客户端 发送字节数组(发送控制单片机、智能家具等硬件的指令)
|
* @param {Object} bytesMessage
|
*/
|
sendBytes(bytesMessage) {
|
socket.UDPSocket.sendBytes({
|
bytesMessage: bytesMessage
|
});
|
},
|
|
/**
|
* 断开单播连接
|
*/
|
disconnect() {
|
socket.UDPSocket.disconnect();
|
},
|
|
/**
|
* 客户端 发送字符串广播
|
* @param {Object} message
|
* @param {Object} ip
|
* @param {Object} port
|
* @param {Object} charsetname
|
*/
|
sendBroadcast(message, ip, port, localPort, charsetname) {
|
socket.UDPSocket = uni.requireNativePlugin('Aimer-UDPPlugin');
|
socket.UDPSocket.sendBroadcast({
|
charsetname: charsetname, //可不选,默认UTF-8,可选'GBK'
|
message: message,
|
ip: ip,
|
port: port,
|
localPort: localPort
|
});
|
},
|
|
/**
|
* 客户端 发送字节数组广播(发送控制单片机、智能家具等硬件的指令)
|
* @param {Object} bytesMessage
|
* @param {Object} ip
|
* @param {Object} port
|
*/
|
sendBytesBroadcast(bytesMessage, ip, port, localPort) {
|
socket.UDPSocket = uni.requireNativePlugin('Aimer-UDPPlugin');
|
socket.UDPSocket.sendBytesBroadcast({
|
bytesMessage: bytesMessage,
|
ip: ip,
|
port: port,
|
localPort: localPort
|
});
|
},
|
|
/**
|
* 开启广播接收
|
* @param {Object} port
|
* @param {Object} charsetname
|
*/
|
bindBroadcast(port, charsetname) {
|
socket.UDPSocket = uni.requireNativePlugin('Aimer-UDPPlugin');
|
socket.UDPSocket.bindBroadcast({
|
charsetname: charsetname, //可不选,默认UTF-8,可选'GBK'
|
port: port
|
},
|
result => {
|
/**
|
* status : 0 开启广播接收
|
* status : 1 关闭广播接收
|
* recBroadMsg : 服务器返回信息
|
* recBroadHexMsg :服务器返回字节数组(单片机、智能家居等硬件数据交互)
|
* recBroadAddress :发送端IP地址
|
*/
|
if (result.status) {
|
//连接状态
|
socket.recBroadcastStatus(result.status);
|
}
|
if (result.recBroadMsg) {
|
//服务器返回信息
|
socket.recBroadcastMsgCallBack(result.recBroadMsg, result.recBroadAddress);
|
}
|
if (result.recBroadHexMsg) {
|
//Hex服务器返回信息
|
socket.recBroadcastHexMsgCallBack(result.recBroadHexMsg, result.recBroadAddress);
|
}
|
}
|
);
|
},
|
|
/**
|
* 关闭广播接收
|
*/
|
closeBroadcast() {
|
socket.UDPSocket = uni.requireNativePlugin('Aimer-UDPPlugin');
|
socket.UDPSocket.closeBroadcast();
|
}
|
}
|
|
export default socket;
|