package com.emotion.service;

import com.emotion.dto.request.WebSocketRequest;
import com.emotion.dto.websocket.ConnectRequest;

import java.security.Principal;

/**
 * WebSocket服务接口
 * 
 * @author huazhongmin
 * @date 2025-09-08
 */
public interface WebSocketService {
    
    /**
     * 处理聊天消息
     * 
     * @param request   WebSocket请求对象
     * @param sessionId 会话ID
     * @param principal 用户主体
     */
    void handleChatMessage(WebSocketRequest request, String sessionId, Principal principal);
    
    /**
     * 处理用户连接
     * 
     * @param request   连接请求对象
     * @param sessionId 会话ID
     * @param principal 用户主体
     */
    void handleUserConnect(ConnectRequest request, String sessionId, Principal principal);
    
    /**
     * 处理用户断开连接
     * 
     * @param sessionId 会话ID
     * @param principal 用户主体
     */
    void handleUserDisconnect(String sessionId, Principal principal);
    
    /**
     * 处理心跳消息
     * 
     * @param sessionId 会话ID
     * @param principal 用户主体
     */
    void handleHeartbeat(String sessionId, Principal principal);
    
    /**
     * 获取在线用户数量
     * 
     * @return 在线用户数量
     */
    int getOnlineUserCount();
}