/**
 * WebSocket配置文件
 * 统一管理WebSocket相关配置（环境与 config/app-env.js 一致）
 */

import { getDoctorWxWsUrls, isDoctorWxDev } from './app-env.js';

const wsUrls = getDoctorWxWsUrls();

/**
 * WebSocket配置
 */
export const websocketConfig = {
  /**
   * WebSocket URL配置
   * dev: 开发环境WebSocket地址
   * prod: 生产环境WebSocket地址
   */
  url: wsUrls,

  /**
   * 获取当前环境的WebSocket URL
   * @returns {string} WebSocket URL
   */
  getUrl() {
    return isDoctorWxDev() ? wsUrls.dev : wsUrls.prod;
  },

  /**
   * 由 WebSocket URL 推导 IM 服务 HTTP 基址（与 WS 同 host，用于 Go API）
   * 例：ws://127.0.0.1:12080/ws -> http://127.0.0.1:12080
   */
  getHttpBaseUrl() {
    const ws = this.getUrl();
    if (!ws || typeof ws !== 'string') return '';
    let base = ws
      .replace(/^wss:\/\//i, 'https://')
      .replace(/^ws:\/\//i, 'http://');
    base = base.replace(/\/?ws\/?$/i, '');
    return base.replace(/\/+$/, '') || base;
  },

  /** Go IM：POST /api/send-to-user */
  getSendToUserApiUrl() {
    const base = this.getHttpBaseUrl();
    if (!base) return '';
    return `${base}/api/send-to-user`;
  },

  /**
   * 重连配置
   */
  reconnect: {
    maxAttempts: 5,        // 最大重连次数
    initialDelay: 1000,    // 初始重连延迟（毫秒）
    maxDelay: 30000        // 最大重连延迟（毫秒）
  },

  /**
   * 心跳配置
   */
  heartbeat: {
    interval: 300000       // 心跳间隔（毫秒），5分钟
  },

  /**
   * 用户标识配置
   */
  user: {
    prefix: 'doctor-',           // 医生小程序使用doctor-前缀
    platform: 'doctor-miniprogram' // 平台标识（医生小程序）
  }
};
