119 lines
2.8 KiB
JavaScript
119 lines
2.8 KiB
JavaScript
|
|
/**
|
|||
|
|
* 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);
|
|||
|
|
}
|