Ir para conteúdo
AndréCJ

SignalR pegar lista de usuários e adicionar a um listview (VB.net)

Recommended Posts

Olá pessoal,

Sou novato em SignalR e estou com uma grande dúvida,  como faço para pegar a lista de usuários on-line de um servidor SignalR/C# com um cliente em VB.net?

Utilizando javascript consigo pegar a lista normalmente porem não estou conseguindo criar o mesmo código em VB.net.

Alguém poderia me ajudar por favor?

 

Função que disponibiliza a lista no servidor:

 

 public bool SendOnlineContacts()
        {
            try
            {
                OnlineContacts onlineContacts = new OnlineContacts();
                foreach (var item in _chatUsers.OrderByDescending(a => a.Value.data))
                {
                    onlineContacts.messageRecipients.Add(item.Value);
                }
                Clients.All.onGetOnlineContacts(onlineContacts);
                return false;
            }
            catch (Exception)
            { 
                throw new InvalidOperationException("Problem in getting contacts!");
            }
        }

 

-------------------------------------------------------------------------

 

Código em ASP:

<script type="text/javascript">
        var Server;
        $(document).ready(function () {

            Server = $.connection.ChatHub;

            $.connection.hub.start({ transport: 'auto', waitForPageLoad: true }, function () {
                Server.server.connect("0123456", "Deu Certo!!!").fail(function (e){
                });
            });


            Server.client.onGetOnlineContacts = function (chatUsers) {

                ShowTable(chatUsers, Server);
            };

        });

        function ShowTable(chatUsers, Server) {

            console.log(chatUsers.messageRecipients);

            if ($("#ListaUsuariosOnline").length) {

                var html = "<table cellspacing='0' cellpadding='5' align='Center' style='font-size:10px; width=1024px;'>";
                html += "<tr style='font-size:10px;'>";
                html += "<th style='font-size:10px;'>Usuário ID</th><th style='font-size:10px;'>Nome/CPF</th><th style='font-size:10px;'>Filial</th><th style='font-size:10px;'>Página atual</th><th style='font-size:10px;'>Navegador</th><th style='font-size:10px;'>Data/Hora</th><th style='font-size:10px;'>Ações</th>";
                html += "</tr>";

                $.each(chatUsers.messageRecipients, function (index, value) {

                    html += "<tr>";
                    html += "<td>" + $(this)[0].messageRecipientId + "</td><td>" + $(this)[0].messageRecipientName + "</td><td>" + $(this)[0].data + "</td><td><input type='button' value='Enviar Msg' onclick=\"Server.server.enviacomando(prompt('Enviar mensagem à " + $(this)[0].messageRecipientName + "', ''), '" + $(this)[0].messageRecipientId + "', 'msg');\" class='btn cancel'> <input type='button' class='btn cancel' value='Enviar Commando' onclick=\"Server.server.enviacomando(prompt('Enviar comando à " + $(this)[0].messageRecipientName + "', ''), '" + $(this)[0].messageRecipientId + "', 'comando');\"></td>";
                    html += "</tr>";
                });

                html += "</table>";

                var len = $.map(chatUsers.messageRecipients, function (n, i) { return i; }).length;

                $("#ListaUsuariosOnlineTotal").html(len);
                $("#ListaUsuariosOnline").html(html);

            }

        }

    </script>

 

Editado por quintelab
Adicionado BBCode

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, é Windows Form.

O sistema funciona da seguinte forma:

Temos vários clientes que se conectam ao Hub e um desses clientes é o Manager criado em VB.net. O Manager será responsável em exibir as informações sobre os clientes. Uma dessas informações é mostrar na tela uma lista com todos os clientes que estão on-line através de um listbox ou listview

 

Consigo pegar essa lista utilizando uma página ASP/Javascript conforme o código que mostrei. Porem gostaria de ter essa mesma lista no Manager.

 

Em outras palavras : não estou conseguindo transcrever o código da página ASP/Javascript para o Manager/Vb.net que é pegar a lista gerada por esta função abaixo que está em meu Hub.

[Serializable]
    public class MessageRecipient
    {
        public MessageRecipient()
        {
            chatRoomIds = new List<string>();
        }
        public string messageRecipientId { get; set; }
        public string messageRecipientName { get; set; }
        public string connectionId { get; set; }
        public DateTime data { get; set; }
        public List<string> chatRoomIds { get; set; }
    }

    [Serializable]
    public class OnlineContacts
    {
        public List<MessageRecipient> messageRecipients { get; set; }
        public OnlineContacts()
        {
            messageRecipients = new List<MessageRecipient>();
        }
    }

public bool SendOnlineContacts()
        {
            try
            {
                OnlineContacts onlineContacts = new OnlineContacts();
                foreach (var item in _chatUsers.OrderByDescending(a => a.Value.data))
                {
                    onlineContacts.messageRecipients.Add(item.Value);
                }
                Clients.All.onGetOnlineContacts(onlineContacts);
                return false;
            }
            catch (Exception)
            { 
                throw new InvalidOperationException("Problem in getting contacts!");
            }
        }

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por igadino
      Boa Tarde pessoal eu peguei esta função no link abaixo parece que e em C# e transformei em vb.net só que esta dando o erro na linha em destaque
      https://github.com/BoletoNet/boletonet/blob/master/src/Boleto.Net.MVC/Models/Exemplos.cs

      Public Sub GeraBoletoCE(ByVal qtde As Integer)
              ' Cria o boleto, e passa os parâmetros usuais
              Dim ce As BoletoBancario
              Dim boletos As New List(Of BoletoBancario)()
              For i As Integer = 0 To qtde - 1
                  ce = New BoletoBancario()
                  ce.CodigoBanco = _codigoBanco
                  Dim vencimento As New DateTime(2007, 9, 10)
                  Dim instr As New Instrucao(1)
                  Dim c As New Cedente("00.000.000/0000-00", "Next Consultoria Ltda.", "0123", "100618", "9")
                  c.Codigo = 112233
                  ' BoletoNet.Boleto b = new BoletoNet.Boleto(vencimento, 20.00m, "14", "0123456789", c);
                  Dim b As New Boleto(vencimento, 2952.95, "14", "0123456789", c)
                  b.NumeroDocumento = "21212114779797" '1b.NossoNumero
                  b.Sacado = New Sacado("000.000.000-00", "Jose Pedro Ongueira de Oliveira")
                  b.Sacado.Endereco.[End] = "Rua Dr. Henrique Portugal, 12"
                  b.Sacado.Endereco.Bairro = "Loteamento Lago Sul"
                  b.Sacado.Endereco.Cidade = "Palmas"
                  b.Sacado.Endereco.CEP = "77062141"
                  b.Sacado.Endereco.UF = "TO"
                  b.Sacado.Endereco.Logradouro = "Rua Dr. Henrique Duarte Lima"
                  b.Sacado.Endereco.Numero = "8980978987"
                  b.Sacado.Endereco.Complemento = "Casa"

                  b.NumeroDocumento = "00001"
                  b.DataProcessamento = DateTime.Now
                  b.DataDocumento = DateTime.Now
                  instr.Descricao = "Não Receber após o vencimento"
                  b.Instrucoes.Add(instr)
                  ce.Boleto = b
                  ce.Boleto.Valida()
                  boletos.Add(ce)
              Next
              GeraLayout(boletos)
          End Sub 
    • Por amenum
      Pessoal, tudo bem? Fiquei parado da programação um bom tempo, e agora que retornei, queria dar manutenção nas minhas aplicações web que estão em vb.net webforms. Comprei um template de bootstrap (https://seantheme.com/color-admin-v4.2/admin/html/index_v2.html) e queria controlar os elementos via code behind in vb.net, mas estou sofrendo aqui por conta do meu limitado conhecimento.
       
      Alguém poderia me dar uma luz em base neste link:
      https://seantheme.com/color-admin-v4.2/admin/html/ui_modal_notification.html
       
      Ao clicar na maioria dos botões dessa página, abre um modal ou alert. Pois bem, eu gostaria de simular essa abertura a partir de uma lógica no code behind, por exemplo, em um formulário, caso alguma regra não esteja sendo cumprida. Simples assim.
       
      No código original, temos:
      Chamada:
      <a href="#modal-dialog" class="btn btn-sm btn-success" data-toggle="modal">Demo</a>
       
      Div do modal
      <div class="modal fade" id="modal-dialog" runat="server">
                                      <div class="modal-dialog">
                                          <div class="modal-content">
                                              <div class="modal-header">
                                                  <h4 class="modal-title">Modal Dialog</h4>
                                                  <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                                              </div>
                                              <div class="modal-body">
                                                  <p>
                                                      Modal body content here...
                                                  </p>
                                              </div>
                                              <div class="modal-footer">
                                                  <a href="javascript:;" class="btn btn-white" data-dismiss="modal">Close</a>
                                                  <a href="javascript:;" class="btn btn-success">Action</a>
                                              </div>
                                          </div>
                                      </div>
                                  </div>
       
      o que eu preciso?
      No code behind
       
       Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            try
                if verificaCampos() = false then ABRE O MODAL DIV COM A MENSAGEM DE ERRO          
           Catch ex As Exception
                     Throw ex
            end try
          End Sub
       
      Alguém pode me ajudar?
       
      muito obrigado.
       
    • Por eduardohaag
      Olá sou amador e iniciante em programação.
      Estou trabalhando  em um projeto onde tenho uma tela com uma lista de pedidos, com varias colunas como, ID, cliente, previsão de entrega, valor total. 
      Gostaria de colocar uma coluna com o texto "visualizar", que quando ocorresse um click, abrisse abaixo da linha selecionada uma lista secundaria com os produtos do pedido, quantidade, preço etc...
       
      Porém não tenho a menor noção de como fazer isso. Pode ser que exista algum controle que tenha essa possibilidade.
      Estou trabalhando com vb.net.
    • Por Robson Wenzel
      Bom Dia!
       
      Estou enfrentando problemas ao realizar somas no report viewer, tenho um dataset configurado com a coluna VALOR do tipo string, e dai no tablix (tabela) eu converto os dados para o tipo monetario pelo código SQL "=FormatCurrency(Fields!Valor.Value,2)", até ai tudo certo. Mas quando eu vou somar o valor total da coluna na tabela da erro, eu uso a função "=Sum(Fields!Valor.Value)". Vocês poderiam me ajudar, gostaria de somar o total do valor e sempre da erro...
    • Por Robson Wenzel
      Olá, sou novo no VB
       
      Estou desenvolvendo um programa de atendimento médico onde tem vários textboxs e um deles é de Valor (R$).
       
      O meu problema é o seguinte...
      No meu banco de dados o campo valor é do tipo moeda e o banco é em access
      No meu programa no dataset configurei ele para double e por código consegui colocar automaticamente ponto e virgula.
      Até ai acho que tudo bem...
      Só que quando eu clico para salvar ele automaticamente esquece do ponto e virgula e salva no datagridview o valor sem ponto e virgula, e dai quando eu seleciono o registro ele esquece dos centavos
       
      Ex.:
      Eu digito na text box: R$ 1.250,00
      E quando eu salvo aparece na datagridview: 1250
      Quando seleciono o mesmo registro ele fica assim na textbox: R$ 12,50
      Só se os centavos não forem zerados ele salva mais se forem 00 ele não salva
       
      Por favor! me ajudem.
       
      Segue o código da formula para colocar os ponto e virgula para vocês darem uma olhada e ver se tem erros...
       
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      Public Shared Sub Moeda(ByRef txt As TextBox)         Dim n As String = String.Empty         Dim v As Double = 0         Try             n = txt.Text.Replace(",", "").Replace(".", "")             If n.Equals("") Then n = ""             n = n.PadLeft(3, "0")             If n.Length > 3 And n.Substring(0, 1) = "0" Then n = n.Substring(1, n.Length - 1)             v = Convert.ToString(n) / 100             txt.Text = String.Format("{0:C2}", v)             txt.SelectionStart = txt.Text.Length         Catch ex As Exception         End Try     End Sub     Private Sub valortxt_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles valortxt.KeyPress         Select Case (valortxt.TextLength)             Case 4                 valortxt.SelectionStart = 5         End Select     End Sub     Private Sub valortxt_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles valortxt.TextChanged         Atendimentos.Moeda(valortxt)     End Sub ------------------------------------------------------------------------------------------------------------------------------------------------------------
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.