package com.narutohuo.xindazhou.socketio.api

import com.narutohuo.xindazhou.socketio.model.SocketIOResponse

/**
 * SocketIO服务接口
 * 
 * 提供SocketIO实时通信能力（WebSocket长连接）
 * 
 * 使用方式：
 * ```kotlin
 * // 获取实例
 * val socketService = SocketIOServiceFactory.getInstance()
 * 
 * // 连接服务器
 * socketService.connect("http://server:9090", "token")
 * 
 * // 订阅事件
 * socketService.on("event") { response -> ... }
 * 
 * // 发送事件
 * socketService.emit("event", data)
 * ```
 */
interface SocketIOService {
    
    /**
     * 连接服务器
     * 
     * @param serverUrl 服务器地址（如 "http://localhost:9090"）
     * @param token JWT Token（用于身份验证）
     */
    fun connect(serverUrl: String, token: String)
    
    /**
     * 断开连接
     */
    fun disconnect()
    
    /**
     * 是否已连接
     */
    fun isConnected(): Boolean
    
    /**
     * 订阅事件
     * 
     * @param event 事件名称
     * @param callback 回调函数，接收SocketIOResponse
     */
    fun on(event: String, callback: (SocketIOResponse) -> Unit)
    
    /**
     * 取消订阅事件
     * 
     * @param event 事件名称
     */
    fun off(event: String)
    
    /**
     * 发送事件到服务器
     * 
     * @param event 事件名称
     * @param data 数据（会被转换为JSON）
     */
    fun emit(event: String, data: Any)
}

