public ActionResult Broadcast(Models.Index dados) { string retorno = string.Empty; var hub = GlobalHost.ConnectionManager.GetHubContext <Hubs.BroadcastHub>(); var hubConnection = new HubConnection("http://localhost:54132/"); IHubProxy serverHub = hubConnection.CreateHubProxy("BroadcastHub"); DateTime startBroadcast = DateTime.Now; RespostaRequisicaoSql resposta; try { resposta = new RespostaRequisicaoSql(); //Cria o objeto da requisicao RequisicaoSql requisicao = Requisicoes.CriarRequisicaoSql(dados.Codigo, dados.Consulta); //Serializa a requisicao em JSon para broadcast //string requisicaoJSON = Requisicoes.SerializaRequisicaoSql(requisicao); //Dispara o broadcast para os clients console hub.Clients.All.obterConsulta(requisicao); //Fica escutando o evento de retorno que serĂ¡ disparado pelos consoles serverHub.On <RespostaRequisicaoSql>("exibeResultado", (resp) => { resposta = resp; } ); hubConnection.Start().Wait(); serverHub.Invoke("Notify", "Controller Call", hubConnection.ConnectionId); while (resposta.CodigoRequisicaoSql <= 0) { if ((DateTime.Now - startBroadcast).TotalSeconds >= 15) { resposta.MensagemErro = "Time Out"; break; } } //resposta = Requisicoes.DeserializaRespostaRequisicaoSql(retorno); if (!(resposta.Retorno == null) && resposta.Retorno.Count > 0) { resposta.Retorno[0] = JsonConvert.DeserializeObject <DataTable>(resposta.Retorno[0].ToString()); } return(View(resposta)); } catch (Exception ex) { throw new Exception(ex.Message); } finally { hubConnection.Dispose(); } }
public void ConsultarDados(RequisicaoSql requisicaoJSON) { this.Clients.All.ObterConsulta(requisicaoJSON); }
public static string SerializaRequisicaoSql(RequisicaoSql requisicao) { return(JsonConvert.SerializeObject(requisicao, Formatting.Indented)); }