/// <summary> /// WebSocket OnOpen event handler; Send listen topics and fire Connected event. /// </summary> private void _wsclient_OnOpen(object sender, EventArgs e) { // Start pinger _pinger.Start(); // Reset reconnect attempts _reconnectionAttempt = 0; // Fire connected event and broadcast message Connected?.Invoke(this, null); // Create PubSub subscription payload var payload = new TwitchPubSubPayload { Type = "LISTEN", Nonce = DateTime.UtcNow.Ticks.ToString(), Data = new TwitchPubSubPayloadData { Topics = new string[] { $"channel-subscribe-events-v1.{_userId}", $"channel-bits-events-v1.{_userId}", $"channel-commerce-events-v1.{_userId}", $"whispers.{_userId}" }, AuthToken = _casterCredentials.OAuth } }; // Async send json converted payload to server _wsclient.SendAsync(JsonConvert.SerializeObject(payload), null); }
/// <summary> /// Pinger. Sends a PING type message to PubSub on every elapsed event. /// </summary> private void _pinger_Elapsed(object sender, ElapsedEventArgs e) { // Send PING when connection is alive if (_wsclient.IsAlive) { // Create PING payload var payload = new TwitchPubSubPayload { Type = "PING" }; // Async send json converted payload to server _wsclient.Send(JsonConvert.SerializeObject(payload)); // Start pong timer _pongtimer.Start(); } }