public IActionResult PostCreateGame([FromBody] Validators.GameCreate gameCreate)
        {
            Result result = this.CreateGame(gameCreate);

            if (result.ResultFunc == this.Ok)
            {
                PusherServer.Pusher pusher = Pusher.Pusher.Create();

                GameData game = (GameData)result.Data;
                //check if there is a player 2
                if (game.user2.id != null)
                {
                    pusher.TriggerAsync(channelName: this.PRIVATE_USER_CHANNELNAME + ((GameData)result.Data).user2.id, eventName: "game_invite", data: result.Data);
                }
                else
                {
                    pusher.TriggerAsync(channelName: this.PUBLIC_GAME_CHANNEL, eventName: "game_created", data: result.Data, options: new TriggerOptions()
                    {
                        SocketId = gameCreate.socket_id
                    });
                }
            }

            return(result.ResultFunc(result.Data));
        }
Ejemplo n.º 2
0
        public void Send(string symbol, object[] data)
        {
            int rows = data.Length;
            //Console.WriteLine($"{DateTime.Now} - Ready to send {rows} rows.");

            var events = new Event[1];

            events[0] = new Event {
                Channel = symbol, EventName = "ob-data", Data = data
            };
            var result = pusher.TriggerAsync(events);
        }
        /// <summary>
        /// Send message to external message bus service.
        /// </summary>
        /// <param name="data"></param>
        /// <typeparam name="T"></typeparam>
        public virtual void SendExternalMessage <T>(T data)
        {
            var messageContainer = new MessageContainer <T>(data, true);

            _externalBroadcaster.TriggerAsync(_recipient.Name, _eventName, messageContainer)
            .Wait();
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Delete message from every channel in pusher server.
        /// </summary>
        /// <exception cref="NotImplementedException"></exception>
        public virtual void DeleteMessages()
        {
            var keys = _channelManager.Keys;
            var broadCastedEvents      = new LinkedList <Event>();
            var channelMessageEmitters = new LinkedList <PusherMessageChannelOption>();

            foreach (var key in keys)
            {
                if (!_channelManager.TryGetValue(key, out var channelMessageEmitter))
                {
                    continue;
                }

                // Empty message container.
                var messageContainer = new MessageContainer <object>(null, false);

                // Build event that needs passing to pusher server.
                var broadCastedEvent = new Event();
                broadCastedEvent.Channel   = key.Name;
                broadCastedEvent.EventName = key.EventName;
                broadCastedEvent.Data      = messageContainer;
                broadCastedEvents.AddLast(broadCastedEvent);

                channelMessageEmitters.AddLast(channelMessageEmitter);
            }

            // Trigger to every channel.
            _broadcaster.TriggerAsync(broadCastedEvents.ToArray());

            // Clear the local channel.
            foreach (var channelMessageEmitter in channelMessageEmitters)
            {
                channelMessageEmitter?.DeleteMessage();
            }
        }
        public IActionResult PostCreateMove([FromBody] Validators.Move move)
        {
            Result result = this.CreateMove(move);

            if (result.ResultFunc == this.Ok)
            {
                PusherServer.Pusher pusher = Pusher.Pusher.Create();
                pusher.TriggerAsync(channelName: this.PRIVATE_GAME_CHANNELNAME + ((GameData)result.Data).id, eventName: "create_move", data: result.Data, options: new TriggerOptions()
                {
                    SocketId = move.socket_id
                });
            }

            return(result.ResultFunc(result.Data));
        }
        public IActionResult UpdateJoinGame([FromBody] Validators.Game gameJoin)
        {
            Result result = this.JoinGame(gameJoin);

            if (result.ResultFunc == this.Ok)
            {
                PusherServer.Pusher pusher = Pusher.Pusher.Create();
                pusher.TriggerAsync(channelName: this.PRIVATE_GAME_CHANNELNAME + ((GameData)result.Data).id, eventName: "game_join", data: result.Data, options: new TriggerOptions()
                {
                    SocketId = gameJoin.socket_id
                });
            }

            return(result.ResultFunc(result.Data));
        }
Ejemplo n.º 7
0
        private async Task SendSecretMessageAsync()
        {
            await Task.Delay(5000).ConfigureAwait(false);

            PusherServer.PusherOptions options = new PusherServer.PusherOptions
            {
                EncryptionMasterKey = Convert.FromBase64String(EncryptionMasterKeyText),
                Cluster             = Config.Cluster,
            };
            string channelName   = "private-encrypted-channel";
            string eventName     = "secret-event";
            var    provider      = new PusherServer.Pusher(PusherApplicationId, PusherApplicationKey, PusherApplicationSecret, options);
            string secretMessage = $"sent secret at {DateTime.Now} on '{channelName}' using event '{eventName}'.";
            await provider.TriggerAsync(channelName, eventName, new
            {
                Name    = nameof(AuthModule),
                Message = secretMessage,
            }).ConfigureAwait(false);

            Console.WriteLine(secretMessage);
        }
Ejemplo n.º 8
0
 public async Task SendMessageAsync(string channelName, string eventName, object data)
 {
     await _pusher.TriggerAsync(channelName, eventName, data).ConfigureAwait(false);
 }
Ejemplo n.º 9
0
 public void SendHeartbeat()
 {
     const string          heartbeatMessage = @"{""heartbeat"": {""interval"": 15000}}";
     Task <ITriggerResult> task             = _pusherServer.TriggerAsync(_pusherOddsChannelName, _pusherEventName, heartbeatMessage);
     ITriggerResult        result           = task.Result;
 }