public async void OnReceiveText(object sender, string message)
        {
            _logger.LogInformation("WS {0} received message: {1}", (sender as WebSocketConnection).Id, message);
            SocketMessage       socketMessage       = null;
            SocketMessageResult socketMessageResult = new SocketMessageResult {
                Result = false
            };

            try
            {
                socketMessage = JsonConvert.DeserializeObject(message, typeof(SocketMessage)) as SocketMessage;
                if (!_socketMessageValidator.Validate(socketMessage).IsValid)
                {
                    throw new Exception();
                }
                socketMessageResult.RequestId = socketMessage.RequestId;
                socketMessageResult.Result    = true;

                try
                {
                    socketMessageResult.Result = ProcessMessage(sender as IWebSocketConnection, socketMessage);
                }
                catch
                {
                    _logger.LogError("Internal error while processing Command procedure ");
                }
            }
            catch
            {
                socketMessageResult.RequestId = "Invalid Json Request";
            }
            _logger.LogInformation("WS {0} response.Result is {1}", (sender as WebSocketConnection).Id, socketMessageResult.Result);
            await(sender as WebSocketConnection).SendAsync(JsonConvert.SerializeObject(socketMessageResult), CancellationToken.None);
        }
示例#2
0
 /// <summary>
 /// Start hosting a game.
 /// </summary>
 /// <param name="callback">Callback for when the server talks back</param>
 /// <param name="game">Game</param>
 /// <param name="gamename">Name of the game</param>
 /// <param name="password">Password</param>
 public void BeginHostGame(SocketMessageResult callback, Octgn.Data.Game game, string gamename, string password)
 {
     Callbacks.Clear();
     Callbacks.Add("hostgameresponse",callback);
     SocketMessage sm = new SocketMessage("hostgame");
     sm.AddData("game",game.Id);
     sm.AddData("version",game.Version);
     sm.AddData("name",gamename);
     sm.AddData("pass",password);
     WriteMessage(sm);
 }