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); }
/// <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); }