using System.Text.Json; using System.Text.Json.Serialization; namespace SVSim.BattleNode.Wire; /// /// Payload of an EIO3 Open packet. Sent by the server to the client immediately after the WS upgrade. /// public sealed record EngineIoHandshake( [property: JsonPropertyName("sid")] string Sid, [property: JsonPropertyName("upgrades")] string[] Upgrades, [property: JsonPropertyName("pingInterval")] int PingInterval, [property: JsonPropertyName("pingTimeout")] int PingTimeout) { // Wire-key casing here is bare camelCase — NOT EmulatedEntrypoint's snake_case policy. private static readonly JsonSerializerOptions Options = new() { DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, }; public string ToJson() => JsonSerializer.Serialize(this, Options); }