Files
xk-doctor-wx/utils/ws/initWebSocket.js
2026-03-06 13:59:22 +08:00

119 lines
2.8 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* WebSocket初始化工具
* 统一管理WebSocket的初始化、连接、断开等操作
*/
import { webSocketManager } from './websocket.js';
/**
* 检查是否已登录
* @returns {boolean} 是否已登录
*/
function checkLoginStatus() {
const token = uni.getStorageSync('token');
const doctorId = uni.getStorageSync('doctor_id') || uni.getStorageSync('user_id');
return !!(token && doctorId);
}
/**
* 初始化WebSocket
* 职责检查登录状态如果已登录则连接WebSocket并绑定用户
* @returns {boolean} 是否初始化成功
*/
export function initWebSocket() {
// 检查登录状态
if (!checkLoginStatus()) {
console.log('未登录跳过WebSocket初始化');
return false;
}
// 如果已经连接,不需要重复连接
if (webSocketManager.isConnected) {
console.log('WebSocket已连接跳过初始化');
return true;
}
try {
console.log('开始初始化WebSocket...');
webSocketManager.connect();
return true;
} catch (error) {
console.error('WebSocket初始化失败:', error);
return false;
}
}
/**
* 断开WebSocket连接
* 职责断开WebSocket连接清理资源
*/
export function disconnectWebSocket() {
try {
console.log('断开WebSocket连接...');
webSocketManager.disconnect();
} catch (error) {
console.error('断开WebSocket失败:', error);
}
}
/**
* 重新绑定用户
* 职责在token刷新或用户信息变更后重新绑定用户
* @returns {boolean} 是否绑定成功
*/
export function rebindUser() {
if (!checkLoginStatus()) {
console.warn('未登录,无法重新绑定用户');
return false;
}
try {
console.log('重新绑定WebSocket用户...');
return webSocketManager.rebindUser();
} catch (error) {
console.error('重新绑定用户失败:', error);
return false;
}
}
/**
* 获取WebSocket连接状态
* @returns {boolean} 是否已连接
*/
export function isWebSocketConnected() {
return webSocketManager.isConnected;
}
/**
* 获取WebSocket认证状态
* @returns {boolean} 是否已认证
*/
export function isWebSocketAuthenticated() {
return webSocketManager.isAuthenticated;
}
/**
* 添加消息处理器
* @param {Function} handler - 消息处理函数
*/
export function addMessageHandler(handler) {
webSocketManager.addMessageHandler(handler);
}
/**
* 移除消息处理器
* @param {Function} handler - 消息处理函数
*/
export function removeMessageHandler(handler) {
webSocketManager.removeMessageHandler(handler);
}
/**
* 发送WebSocket消息
* @param {Object} message - 消息对象
* @param {boolean} requireAuth - 是否需要认证
* @returns {boolean} 是否发送成功
*/
export function sendWebSocketMessage(message, requireAuth = true) {
return webSocketManager.send(message, requireAuth);
}