Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 19123|Resposta: 1

[ASP.NET] mvc 4.0 Como usar o SignalR (2)

[Copiar link]
Publicado em 05/07/2017 11:15:08 | | | |
Primeiro, criei uma nova pasta Hubs dentro do projeto

Além disso, crie um novo arquivo PositionVehicle sob a pasta, como mostrado na figura a seguir:



Reconstrua o projeto, e então referenciamos os dois arquivos js seguintes na página de visualização



Nota!!!

O arquivo "/Scripts/jquery.signalR-2.2.2.min.js" é adicionado à instalação do SignalR e existe no disco físico

"/signalr/hubs" éSignalR é gerado automaticamente, que não pode ser encontrada no disco físico!

Vamos dar uma olhada no arquivo js gerado pelo SignalR, da seguinte forma:

/*!
* ASP.NET Biblioteca JavaScript SignalR v2.2.2
* http://signalr.net/
*
* Direitos autorais (c) Fundação .NET. Todos os direitos reservados.
* Licenciado sob a Licença Apache, Versão 2.0. Veja License.txt na raiz do projeto para informações sobre licença.
*
*/

<caminho de referência="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" />
<caminho de referência="jquery.signalR.js" />
(função ($, janela, indefinida) {
    <nome do param="$" type="jQuery" />
    "use rigoroso";

    if (typeof ($.signalR) !== "função") {
        lançar um novo Error("SignalR: SignalR não está carregado. Por favor, certifique-se de que jquery.signalR-x.js seja referenciado antes de ~/signalr/js.");
    }

    var signalR = $.signalR;

    function makeProxyCallback(hub, callback) {
        função return () {
            Chame o método do hub cliente
            callback.apply(hub, $.makeArray(argumentos));
        };
    }

    function registerHubProxies(instance, shouldSubscribe) {
        var key, hub, memberKey, memberValue, subscriptionMethod;

        para (chave em instância) {
            if (instance.hasOwnProperty(key)) {
                hub = instância[chave];

                se (!( hub.hubName)) {
                    Não é um hub de cliente
                    continue;
                }

                if (shouldSubscribe) {
                    Queremos nos inscrever nos eventos do hub
                    subscriptionMethod = hub.on;
                } else {
                    Queremos cancelar a inscrição dos eventos do hub
                    subscriptionMethod = hub.off;
                }

                Faça looping por todos os membros no hub e encontre funções do hub cliente para assinar/cancelar a inscrição
                for (memberKey in hub.client) {
                    if (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = hub.client[memberKey];

                        if (!$.isFunction(memberValue)) {
                            Não é uma função de hub de cliente
                            continue;
                        }

                        subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue));
                    }
                }
            }
        }
    }

    $.hubConnection.prototype.createHubProxies = function () {
        var proxies = {};
        this.starting(function () {
            Registre os proxies do hub como assinados
            (instância, deveriaAssinar)
            registerHubProxies (proxies, verdadeiro);

            this._registerSubscribedHubs();
        }).desconectado(função () {
            Desassinar todos os proxies do hub quando "desconectarmos".  Isso é para garantir que não adicionemos chamadas funcionais novamente.
            (instância, deveriaAssinar)
            registerHubProxies (proxies, falso);
        });

        proxies['VeículoPosição'] = isto.criarProxy Hub('VeículoPosição');
        proxies['positionVehicle'].client = { };
        proxies['positionVehicle'].server = {
            Olá: Função (nome) {
                return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments)));
             }
        };

        devolver proxies;
    };

    signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false });
    $.extend(signalR, signalR.hub.createHubProxies());

}(window.jQuery, janela));


Então, vamos testar e o código é o seguinte:



Os resultados dos testes são os seguintes:


As duas primeiras mensagens que recebemos foram enviadas por nós mesmos, e também recebemos, e a terceira mensagem foi enviada por mim, que abri outro navegador, e também recebemos.

Quando recebi a mensagem, não era um websocket, mas sim uma consulta HTTP, porque nosso js reportou um erro

Quanto ao motivo do erro de js ter sido reportado, vamos falar sobre isso na próxima vez.









Anterior:asp.net mvc4.0 Instalando o SignalR (1)
Próximo:Código de erro: 1175. Você está usando o modo de atualização segura e tentou atualizar um ta...
 Senhorio| Publicado em 05/07/2017 14:53:15 |
. .NET aparece usando SignalRErro durante o handshake do WebSocket
Durante o processo de desenvolvimento, encontrei o seguinte erro: Conexão WebSocket para 'ws://*****' falhada: Erro durante o handshake WebSocket: net::ERR_CONNECTION_RESET.

A razão pela qual o websocket não pode ser usado é porque o arquivo web.config não está configurado. O SignalR para rodar corretamente requer adicionar o seguinte item de configuração no nó system.web:



targetFramework definido para 4.5
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com