uniapp websocket封装好 包含心跳 ,全局使用它 避免 onopen of null
时间: 2024-05-30 14:16:04 浏览: 177
Uniapp使用封装好的接口
我不是程序员,但是我可以根据您提供的信息给出一个示例代码,您可以参考一下:
//websocket.js
const SocketTask = uni.connectSocket({
url: 'ws://localhost:8080',
header: {
'content-type': 'application/json'
},
method: "GET"
});
let isConnected = false;
let timer = null; //心跳定时器
//连接成功
SocketTask.onOpen(() => {
console.log('WebSocket已连接');
isConnected = true;
startHeartbeat(); //启动心跳
});
//连接失败
SocketTask.onError((res) => {
console.log('WebSocket连接失败:', res);
isConnected = false;
clearInterval(timer); //清除心跳定时器
});
//接收消息
SocketTask.onMessage((res) => {
console.log('收到消息:', res);
});
//关闭连接
SocketTask.onClose(() => {
console.log('WebSocket已关闭');
isConnected = false;
clearInterval(timer); //清除心跳定时器
});
//发送消息
function sendSocketMessage(msg) {
if (isConnected) {
SocketTask.send({
data: msg,
success: () => {
console.log('发送消息成功:', msg);
}
});
} else {
console.log('WebSocket未连接');
}
}
//心跳函数
function startHeartbeat() {
timer = setInterval(() => {
sendSocketMessage('ping'); //发送心跳消息
}, 30000);
}
export default {
sendSocketMessage
};
//使用方法
import WebSocket from '@/common/websocket.js';
export default {
mounted() {
WebSocket.sendSocketMessage('Hello WebSocket!'); //发送消息
}
};
这是一个简单的示例代码,您可以根据自己的需求进行修改和优化。
阅读全文