fix(phase2a): 代码审查修复 - 8项关键/重要问题
安全修复: - WebSocket Token 增加 Redis 有效性校验(已登出用户无法建立 WS) 功能修复: - GetRecommendFriends 改为批量查询,正确返回用户名/昵称/头像 - 上下线通知:OnlineService 通过接口注入获取好友列表推送状态变更 - 管理端在线用户 API 补充用户名信息 代码质量: - 所有 json.Marshal/Redis 错误增加检查与日志 - ContactController 13 个 endpoint 统一走 handleError 业务错误映射 - 管理端 Controller 补全包注释、函数注释和结构化日志 - 前端 5 个联系人页面 avatar 工具函数抽取到 utils/avatar.js Made-with: Cursor
This commit is contained in:
@@ -144,8 +144,14 @@ export const useContactStore = defineStore('contact', () => {
|
||||
if (friend) friend.is_online = online
|
||||
}
|
||||
|
||||
/** 初始化 WebSocket 事件监听 */
|
||||
/** 防止 WebSocket 事件监听重复注册 */
|
||||
let _wsInitialized = false
|
||||
|
||||
/** 初始化 WebSocket 事件监听(幂等,多次调用只注册一次) */
|
||||
const initWsListeners = () => {
|
||||
if (_wsInitialized) return
|
||||
_wsInitialized = true
|
||||
|
||||
wsService.on('notify.friend.request', () => {
|
||||
fetchPendingRequests()
|
||||
})
|
||||
|
||||
@@ -20,17 +20,23 @@ export const useWebSocketStore = defineStore('websocket', () => {
|
||||
/** 是否已连接 */
|
||||
const isConnected = computed(() => connected.value)
|
||||
|
||||
/** 防止 _connected/_disconnected 监听器重复注册 */
|
||||
let _initialized = false
|
||||
|
||||
/**
|
||||
* 初始化 WebSocket 连接
|
||||
* @param {string} [token] - JWT Token
|
||||
*/
|
||||
const connect = (token) => {
|
||||
wsService.on('_connected', () => {
|
||||
connected.value = true
|
||||
})
|
||||
wsService.on('_disconnected', () => {
|
||||
connected.value = false
|
||||
})
|
||||
if (!_initialized) {
|
||||
wsService.on('_connected', () => {
|
||||
connected.value = true
|
||||
})
|
||||
wsService.on('_disconnected', () => {
|
||||
connected.value = false
|
||||
})
|
||||
_initialized = true
|
||||
}
|
||||
wsService.connect(token)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user