Beispiel #1
0
        public static void ReadMessagesFromConnection(TcpClient client, GameHubMessageQueue queue)
        {
            var messages  = new List <IGameHubMessage>();
            var stream    = client.GetStream();
            var jsonBytes = new byte[client.ReceiveBufferSize];

            stream.Read(jsonBytes, 0, jsonBytes.Length);

            var jsonMessage = GameHubMessage.GetStrings(jsonBytes);

            try
            {
                jsonMessage.ToList().ForEach(message =>
                {
                    messages.Add(JsonConvert.DeserializeObject <GameHubMessage>(message));
                });
            }
            catch (JsonSerializationException)
            {
                // Something was probably wrong with the message
            }
            catch (Exception)
            {
                Console.WriteLine("Error in decoding message");
            }

            queue.AddRange(messages);
            queue.QueueChanged();
        }
Beispiel #2
0
        public static void SendMessageToClient(TcpClient client, GameHubMessage message)
        {
            var jsonBytes = GameHubMessage.GetBytes(message);
            var stream    = client.GetStream();

            if (stream.CanWrite)
            {
                stream.Write(jsonBytes, 0, jsonBytes.Length);
                stream.Flush();
            }
        }
Beispiel #3
0
 public void NotifyClient(GameHubConnectionClient client, GameHubMessage message)
 {
     try
     {
         if (client.Connection.Connected)
         {
             GameHubConnectivity.SendMessageToClient(client, message);
         }
     }
     catch
     {
         return;
     }
 }
Beispiel #4
0
        private void HandleClientConnect(CancellationToken token)
        {
            Task.Factory.StartNew(async() =>
            {
                try
                {
                    if (Server.Pending())
                    {
                        var client        = await Server.AcceptTcpClientAsync();
                        var gameHubClient = new GameHubConnectionClient
                        {
                            Connection = client
                        };

                        lock (_clientsLock)
                        {
                            _clients.Add(gameHubClient);
                        }

                        GameHubConnectivity.Subscribe(client, MessageQueue, TimeSpan.FromMilliseconds(200), token);

                        var message = new GameHubMessage
                        {
                            SenderGamePort = ((IPEndPoint)Server.LocalEndpoint).Port,
                            Text           = "Welcome to the GameHub Server. I hope you enjoy yourself",
                            Status         = EMessageType.InitialServerConnection
                        };

                        NotifyClient(gameHubClient, message);
                    }
                }
                catch
                {
                    return;
                }
            }, token);
        }
Beispiel #5
0
 public void NotifyClients(GameHubMessage message)
 {
     Parallel.ForEach(_clients, (GameHubConnectionClient client) => { NotifyClient(client, message); });
 }
Beispiel #6
0
 public static void SendMessageToClient(GameHubConnectionClient client, GameHubMessage message)
 {
     SendMessageToClient(client.Connection, message);
 }