public override void OnMessage(string message) { try { var envio = JsonConvert.DeserializeObject <Envio>(message); switch (envio.TipoMensagem) { case (int)TipoMensagem.Montagem: { Barcos = new List <Barco>(); var firstOrDefault = envio.Objeto.FirstOrDefault(); if (firstOrDefault != null) { var idTab = int.Parse(firstOrDefault.ToString()); using (var db = new TabuleirosContext()) { var tabuleiro = db.Tabuleiros.FirstOrDefault(x => x.Id == idTab); var itens = JsonConvert.DeserializeObject <List <EnvioBarco> >(tabuleiro.Dados); foreach (var item in itens) { Barcos.Add(new Barco(item)); StatusTabuleiro = true; } } } else { Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Fail, "Você Erro !!!!"))); } if (clients.All(x => ((MicrosoftWebSockets)x).StatusTabuleiro)) { clients.Broadcast(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Inicio, "Jogo Iniciado"))); ObterOponente().Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.MandoDeJogo, "Sua Vez !!!"))); } else { this.Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Aguarde, "Aguarde o proximo Jogador terminar a Montagem...."))); } } break; case (int)TipoMensagem.Jogada: { var jogada = envio.Objeto.FirstOrDefault(); if (jogada != null) { var opoente = ObterOponente(); if (opoente != null) { var barco = opoente.Barcos.FirstOrDefault(x => x.Coordenadas.Any(y => y.Valor == jogada.ToString() && !y.Destruido)); if (barco != null) { opoente.Barcos.Remove(barco); barco.Afundar(jogada.ToString()); opoente.Barcos.Add(barco); AtualizarBarcos(opoente, jogada.ToString()); Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Acerto, "Você acerto !!!!!"))); if (barco.Coordenadas.All(x => x.Destruido)) { opoente.Send( JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Destruido, string.Format("Ops Você perdeu seu barco !!! |{0}", barco.TipoBarco)))); } } else { opoente.Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Tiro, string.Format("Tiro |{0}", jogada.ToString())))); Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Erro, "Você Erro !!!!"))); } } } } VerificarFinalJogo(); ObterOponente().Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.MandoDeJogo, "Sua Vez !!!!"))); break; case (int)TipoMensagem.TempoEsgotado: ObterOponente().Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.MandoDeJogo, "Sua Vez !!!!"))); break; } var webSocketHandler = clients.SingleOrDefault(r => ((MicrosoftWebSockets)r).name == "Julio"); if (webSocketHandler != null) { webSocketHandler.Send("Rola"); } } catch (Exception ex) { this.Send(JsonConvert.SerializeObject(new Retorno(TipoMensagemRetorno.Fail, "Mensagem com Erro"))); } }