package com.snack.server.module.chat.websocket;

import com.snack.server.module.chat.service.ChatOnlineService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.messaging.SessionConnectedEvent;
import org.springframework.web.socket.messaging.SessionDisconnectEvent;

/**
 * WebSocket 生命周期监听器
 * 连接建立 / 断开时维护在线状态
 */
@Slf4j
@Component
@RequiredArgsConstructor
public class ChatWebSocketEventListener {

    private final ChatOnlineService chatOnlineService;

    @EventListener
    public void handleConnect(SessionConnectedEvent event) {
        // 握手时已在 interceptor 中校验，这里仅打日志
        log.debug("[ws] STOMP 连接建立");
    }

    @EventListener
    public void handleDisconnect(SessionDisconnectEvent event) {
        // 从 session 属性拿不到 loginId（事件不携带 attributes），
        // 因此不做自动清理 offline；由心跳 / HTTP 接口定期清理
        log.debug("[ws] STOMP 连接断开");
    }
}
