package infra

import "fmt"

// WSSend envia bytes al canal Send de un cliente especifico de forma no bloqueante.
// Si el canal esta lleno o el cliente desconectado, retorna error sin bloquear al emisor.
// Para broadcast a todos los clientes usar WSBroadcast.
func WSSend(client *WSClient, msg []byte) error {
	if client == nil {
		return fmt.Errorf("ws send: client is nil")
	}
	select {
	case client.Send <- msg:
		return nil
	default:
		return fmt.Errorf("ws send: client %s send channel full or closed", client.ID)
	}
}
