private void HandleDispatchEvent(PubsubPayload evnt) { switch (evnt.Data.Value.Topic.DispatchType) { case PubsubDispatchType.BitsV1: var bitsv1Event = Serializer.Read <EventData <BitsEvent> >(evnt.Data.Value.Data.Bytes); BitsV1?.Invoke(bitsv1Event); break; case PubsubDispatchType.BitsV2: var bitsv2Event = Serializer.Read <EventData <BitsEvent> >(evnt.Data.Value.Data.Bytes); BitsV2?.Invoke(bitsv2Event); break; case PubsubDispatchType.BitsBadgeUnlock: var bitsBadgeEvent = Serializer.Read <BitsBadgeEvent>(evnt.Data.Value.Data.Bytes); BitsBadgeUnlock?.Invoke(bitsBadgeEvent); break; case PubsubDispatchType.ChannelSubscriptionV1: var channelSubscribeEvent = Serializer.Read <ChannelSubscribeEvent>(evnt.Data.Value.Data.Bytes); ChannelSubscriptionV1?.Invoke(channelSubscribeEvent); break; case PubsubDispatchType.CommerceV1: var commerceEvent = Serializer.Read <CommerceEvent>(evnt.Data.Value.Data.Bytes); CommerceV1?.Invoke(commerceEvent); break; case PubsubDispatchType.Whisper: var whisperEvent = Serializer.Read <WhisperEvent>(evnt.Data.Value.Data.Bytes); Whisper?.Invoke(whisperEvent); break; } }
public void Send(PubsubPayload payload) { if (!_runCts.IsCancellationRequested) { _sendQueue?.Add(payload); } }
private void HandleEvent(PubsubPayload evnt) { switch (evnt.Operation) { case PubsubOperation.Ping: SendHeartbeatAck(); Heartbeat?.Invoke(); break; case PubsubOperation.Pong: HeartbeatAck?.Invoke(); break; case PubsubOperation.Reconnect: Reconnect?.Invoke(); throw new TimeoutException("Server requested a reconnect"); case PubsubOperation.Message: HandleDispatchEvent(evnt); break; } }
private async Task SendAsync(ClientWebSocket client, CancellationToken cancelToken, PubsubPayload payload) { var writer = Serializer.Write(payload); await client.SendAsync(writer.AsSegment(), WebSocketMessageType.Text, true, cancelToken); SentPayload?.Invoke(payload); }