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 drapn
      Pessoal boa noite,
      Fiz um aplicativo acessando um banco de dados feito também diretamente do visual studio 2015, o projeto gerou um arquivo de banco de dados *.mdf com um arquivo em bloco de notas onde possui a senha e endereço... no entanto estou tentando rodar o aplicativo em uma maquina que nao possui o vs2015 instalado e estou me deparando com o seguinte erro (em anexo), alguémconsegue me ajudar?
      Desde ja muito obrigado galera!
       
       


    • Por Daniel Lucca
      Olá todos! Estou iniciando em programação, e pretendo criar um 'auto-click', nele terá uma webviewer e eu preciso de alguma forma criar uma função para capturar o button do php (que estará no webviewer) e fazer ele clicar com um tempo determinado... Como estou iniciando não sei como fazer, se alguém tiver alguma ideia, me ajude. Obrigado. 
    • Por KALAND
      Última edição em 12/03/2018 16:35:32 por KALAND
      Olá pessoal estou fazendo um cadastro de estoque onde tenho um form venda que efetua a venda do produto e dou baixa no estoque que ao clicar em finalizar ele grava as informações no banco e me abre um form com cristalreport onde aparece os dados da compra efetuada, porem ele esta me retornando todos os dados das vendas anteriores tbem. No caso so queria da ultima que efetuei. 
      Alguem poderia me ajudar

      segue o código que estou utilizando


          Private Sub btnfinalizar_Click(sender As Object, e As EventArgs) Handles btnfinalizar.Click
              Dim numero As Integer
              con.Open()
              sql = "select * from faturas where nfaturas = '" & txtnfatura.Text & "'"
              da = New FbDataAdapter(sql, con)
              tabela = New DataTable()
              da.Fill(tabela)
              numero = tabela.Rows.Count
              con.Close()
              obterultimoregistro()
              F_relfaturas.Show()
          End Sub

          Private Sub obterultimoregistro()
              Try
                  con.Open()
                  Dim cmd As New FbCommand
                  cmd.CommandText = "select MAX (NFATURAS)from FATURAS"
                  cmd.CommandType = CommandType.Text
                  cmd.Connection = con
                  da.SelectCommand = cmd
                  con.Close()
                  tabela.Clear()
                  da.Fill(tabela)
                  Dim nfaturas As String = tabela.Rows.Item(0).Item(0).ToString
              Catch ex As Exception
                  MsgBox(ex.Message)
              End Try
          End Sub
    • Por KALAND
      Olá Pessoal bom dia.

      Estou com um problema . Tenho um form onde eu efetuo o cadastro de imoveis e outro forme onde eu pesquisa. 
      Neste forme pesquisa tenho um gridview onde contem os dados buscando em meu banco de dados, inclusive uma coluna imagem onde estou armazenando as imagens cadastradas junto com o cadastro de imoveis.
      Neste forme pesquisa inseri um código no grid que ao clicar duas vezes ele abre os dados em outro form com todas as informações daquele determinado imóvel, mas infelizmente não estou conseguindo trazer as fotos para quando efetuar esta pesquisa ele aparecer neste outro form em uma picturebox junto com os dados do imovel. Segue meu código se alguém puder me ajudar agradeço de coração.

       
        Private Sub gdvLoc_vend_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles gdvLoc_vend.CellDoubleClick         My.Forms.PesquisaImoveis.txtNome.Text = gdvLoc_vend.CurrentRow.Cells("NOME").Value.ToString()         My.Forms.PesquisaImoveis.txtValor.Text = gdvLoc_vend.CurrentRow.Cells("VALOR").Value.ToString()         My.Forms.PesquisaImoveis.txtTipoImv.Text = gdvLoc_vend.CurrentRow.Cells("TIPO").Value.ToString()         My.Forms.PesquisaImoveis.txtLoc_vend.Text = gdvLoc_vend.CurrentRow.Cells("LOCACAO").Value.ToString()         My.Forms.PesquisaImoveis.txtBairro.Text = gdvLoc_vend.CurrentRow.Cells("BAIRRO").Value.ToString()         My.Forms.PesquisaImoveis.txtCondominio.Text = gdvLoc_vend.CurrentRow.Cells("CONDOMINIO").Value.ToString()         My.Forms.PesquisaImoveis.txtCidade.Text = gdvLoc_vend.CurrentRow.Cells("CIDADE").Value.ToString()         My.Forms.PesquisaImoveis.txtUf.Text = gdvLoc_vend.CurrentRow.Cells("UF").Value.ToString()         My.Forms.PesquisaImoveis.txtCep.Text = gdvLoc_vend.CurrentRow.Cells("CEP").Value.ToString()         My.Forms.PesquisaImoveis.txtEnd.Text = gdvLoc_vend.CurrentRow.Cells("ENDERECO").Value.ToString()         My.Forms.PesquisaImoveis.txtDescricao.Text = gdvLoc_vend.CurrentRow.Cells("DESCRICAO").Value.ToString()         My.Forms.PesquisaImoveis.txtIdImovel.Text = gdvLoc_vend.CurrentRow.Cells("ImovelId").Value.ToString()         My.Forms.PesquisaImoveis.picFoto.Image = gdvLoc_vend.CurrentRow.Cells("Imagem").Value.ToString()         Close()     End Sub


      kaland
       
    • Por matheusmilita
      Estou iniciando na programação, e estou querendo focar em aplicativos desktop, más queria uma linguagem facil e objetiva, não gosto de C#, eu sei um pouco de visual basic, e gostaria de começar no pyton, qual será melhor para mim que sou iniciante? 
×

Informação importante

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