// latency.socket.ts
import { Server, Socket } from "socket.io"
import { NETWORK_PROFILES } from "../core/networkProfiles"

export function applySocketLatency(io: Server, profileName?: string) {
    if (!profileName) return

    const profile = NETWORK_PROFILES[profileName]
    if (!profile) throw new Error("Unknown network profile")

    io.use((socket: Socket, next) => {
        const delay =
            Math.floor(Math.random() * (profile.maxDelay - profile.minDelay)) +
            profile.minDelay

        setTimeout(next, delay)
    })

    io.on("connection", (socket) => {
        socket.use((packet, next) => {
            const delay =
                Math.floor(Math.random() * (profile.maxDelay - profile.minDelay)) +
                profile.minDelay

            setTimeout(next, delay)
        })
    })
}