Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
 public void Send(PubsubPayload payload)
 {
     if (!_runCts.IsCancellationRequested)
     {
         _sendQueue?.Add(payload);
     }
 }
Exemplo n.º 3
0
        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;
            }
        }
Exemplo n.º 4
0
        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);
        }