/** * 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); }