85 lines
1.5 KiB
JavaScript
85 lines
1.5 KiB
JavaScript
let socket = null;
|
||
const HEARTBEAT_INTERVAL = 5000;
|
||
let heartbeatTimer = null;
|
||
|
||
// // 连接到后端 WebSocket,并开始心跳
|
||
// function connect() {
|
||
// WebSocket.connect('ws://your-backend-url');
|
||
// startHeartbeat();
|
||
// }
|
||
|
||
// 开始发送心跳消息
|
||
function startHeartbeat() {
|
||
heartbeatTimer = setInterval(() => {
|
||
WebSocket.send('heartbeat');
|
||
}, HEARTBEAT_INTERVAL);
|
||
}
|
||
|
||
// 停止发送心跳消息
|
||
function stopHeartbeat() {
|
||
clearInterval(heartbeatTimer);
|
||
}
|
||
|
||
// 监听收到的消息
|
||
WebSocket.onMessage((event) => {
|
||
if (event.data === 'heartbeat') {
|
||
// 收到心跳响应,重置定时器
|
||
resetHeartbeatTimer();
|
||
} else {
|
||
// 处理其他消息
|
||
}
|
||
});
|
||
|
||
// 重置心跳定时器
|
||
function resetHeartbeatTimer() {
|
||
clearInterval(heartbeatTimer);
|
||
startHeartbeat();
|
||
}
|
||
|
||
// 在页面关闭或组件销毁时,关闭 WebSocket 连接并停止心跳
|
||
uni.onUnload(() => {
|
||
WebSocket.close();
|
||
stopHeartbeat();
|
||
});
|
||
|
||
|
||
function connect(url) {
|
||
socket = uni.connectSocket({
|
||
url: url
|
||
});
|
||
|
||
socket.onOpen(() => {
|
||
console.log('WebSocket 连接已打开');
|
||
});
|
||
|
||
socket.onError((error) => {
|
||
console.error('WebSocket 连接发生错误', error);
|
||
});
|
||
|
||
socket.onClose((e) => {
|
||
console.log('WebSocket 连接已关闭', e);
|
||
});
|
||
|
||
socket.onMessage((event) => {
|
||
console.log('收到服务器消息', event.data);
|
||
// 处理收到的消息
|
||
});
|
||
}
|
||
|
||
function send(message) {
|
||
socket.send({
|
||
data: message
|
||
});
|
||
}
|
||
|
||
function close() {
|
||
if (socket) {
|
||
socket.close();
|
||
}
|
||
}
|
||
|
||
export default {
|
||
connect,
|
||
send,
|
||
close
|
||
}; |