terminalCode Example

WebSockets

calendar_today May 3, 2026 schedule ~1 min read person patrickjr verified 50

Use WebSockets for real-time communication with external servers.

Basic Setup

CSHARP
public sealed class WebSocketClient : Component
{
    [Property] public string ConnectionUri { get; set; } // wss://host.example:443/ws
    
    public WebSocket Socket { get; set; }

    protected override void OnStart()
    {
        Socket = new WebSocket();
        Socket.OnMessageReceived += HandleMessageReceived;
        _ = Connect();
    }

    private async Task Connect()
    {
        await Socket.Connect(ConnectionUri);
        await SendMessage("Hello from s&box!");
    }

    private async Task SendMessage(string message)
    {
        await Socket.Send(message);
    }

    private void HandleMessageReceived(string message)
    {
        Log.Info($"Received: {message}");
    }
    
    protected override void OnDestroy()
    {
        Socket?.Dispose();
    }
}

With Auth Token

CSHARP
var token = await Sandbox.Services.Auth.GetToken("YourServiceName");

if (string.IsNullOrEmpty(token))
{
    Log.Warning("No auth token available");
    return;
}

var headers = new Dictionary<string, string>()
{
    { "Authorization", token }
};

await socket.Connect("wss://example.com/ws", headers);

Common Use Cases

  • Custom networking — External matchmaking, chat servers
  • Persistent data — Cross-session player data
  • Real-time services — Leaderboards, live events
  • External APIs — Web service integration

Binary Messages

CSHARP
// Send binary data
byte[] data = ...;
await Socket.Send(data);

// Receive binary (in OnBinaryMessageReceived)
Socket.OnBinaryMessageReceived += (byte[] data) =>
{
    ProcessData(data);
};
Was this helpful?