101 lines
2.3 KiB
JavaScript
101 lines
2.3 KiB
JavaScript
/**
|
||
* WebSocket 配置文件
|
||
*
|
||
* 集中管理 WebSocket 相关配置
|
||
*/
|
||
|
||
// 根据环境选择 WebSocket 地址
|
||
const getWebSocketUrl = () => {
|
||
// #ifdef H5
|
||
// H5 开发环境
|
||
if (process.env.NODE_ENV === 'development') {
|
||
return 'ws://localhost:8082/ws/chat'
|
||
}
|
||
// H5 生产环境
|
||
return 'wss://120.55.234.65:8082/ws/chat'
|
||
// #endif
|
||
|
||
// #ifdef MP-WEIXIN
|
||
// 小程序必须使用 wss(加密连接)
|
||
return 'wss://120.55.234.65:8082/ws/chat'
|
||
// #endif
|
||
|
||
// #ifdef APP-PLUS
|
||
// App 可以使用 ws 或 wss
|
||
return 'wss://120.55.234.65:8082/ws/chat'
|
||
// #endif
|
||
|
||
// 默认地址
|
||
return 'ws://120.55.234.65:8082/ws/chat'
|
||
}
|
||
|
||
export default {
|
||
// WebSocket 服务器地址(动态获取)
|
||
url: getWebSocketUrl(),
|
||
|
||
// 重连配置
|
||
reconnect: {
|
||
enabled: true, // 是否启用自动重连
|
||
maxAttempts: 10, // 最大重连次数
|
||
interval: 3000, // 重连间隔(毫秒)
|
||
incrementInterval: true, // 是否递增重连间隔
|
||
maxInterval: 30000 // 最大重连间隔
|
||
},
|
||
|
||
// 心跳配置
|
||
heartbeat: {
|
||
enabled: true, // 是否启用心跳
|
||
interval: 30000, // 心跳间隔(毫秒)
|
||
timeout: 10000, // 心跳超时时间
|
||
pingMessage: { // 心跳消息格式
|
||
type: 'ping',
|
||
timestamp: () => Date.now()
|
||
}
|
||
},
|
||
|
||
// 消息队列配置
|
||
messageQueue: {
|
||
enabled: true, // 是否启用消息队列
|
||
maxSize: 100, // 队列最大长度
|
||
clearOnConnect: false // 连接成功后是否清空队列
|
||
},
|
||
|
||
// 日志配置
|
||
log: {
|
||
enabled: true, // 是否启用日志
|
||
level: 'info' // 日志级别:debug, info, warn, error
|
||
},
|
||
|
||
// 消息类型定义
|
||
messageTypes: {
|
||
// 文字消息
|
||
TEXT: 'text',
|
||
// 图片消息
|
||
IMAGE: 'image',
|
||
// 语音消息
|
||
VOICE: 'voice',
|
||
// 系统消息
|
||
SYSTEM: 'system',
|
||
// 心跳
|
||
PING: 'ping',
|
||
PONG: 'pong',
|
||
// 已读回执
|
||
READ: 'read',
|
||
// 输入中
|
||
TYPING: 'typing',
|
||
// 人工转接
|
||
TRANSFER: 'transfer'
|
||
},
|
||
|
||
// 事件名称定义
|
||
events: {
|
||
OPEN: 'open',
|
||
CLOSE: 'close',
|
||
ERROR: 'error',
|
||
MESSAGE: 'message',
|
||
RECONNECT: 'reconnect',
|
||
RECONNECT_FAILED: 'reconnect_failed'
|
||
}
|
||
}
|
||
|