Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 19123|Risposta: 1

[ASP.NET] mvc 4.0 Come utilizzare SignalR (2)

[Copiato link]
Pubblicato su 05/07/2017 11:15:08 | | | |
Per prima cosa, ho creato una nuova cartella Hubs sotto il progetto

Inoltre, crea un nuovo file PositionVehicle sotto la cartella, come mostrato nella figura seguente:



Ricostruiamo il progetto, poi facciamo riferimento ai seguenti due file js nella pagina di visualizzazione



Nota!!!

Il file "/Scripts/jquery.signalR-2.2.2.min.js" viene aggiunto all'installazione di SignalR ed esiste sul disco fisico

"/signalr/hubs" èSignalR viene generato automaticamente, che non si trova sul disco fisico!

Diamo un'occhiata al file js generato da SignalR, come segue:

/*!
* ASP.NET Libreria JavaScript SignalR v2.2.2
* http://signalr.net/
*
* Copyright (c) .NET Foundation. Tutti i diritti riservati.
* Concesso in licenza con la Licenza Apache, Versione 2.0. Consulta License.txt nella sezione principale del progetto per le informazioni sulla licenza.
*
*/

<reference path="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" />
<percorso di riferimento="jquery.signalR.js" />
(funzione ($, finestra, indefinita) {
    <param name="$" type="jQuery" />
    "usa severo";

    if (typeof ($.signalR) !== "funzione") {
        throw new Error("SignalR: SignalR non è caricato. Si prega di assicurarsi che jquery.signalR-x.js sia citato prima di ~/signalr/js.");
    }

    var signalR = $.signalR;

    function makeProxyCallback(hub, callback) {
        funzione di ritorno () {
            Chiama il metodo client hub
            callback.apply(hub, $.makeArray(argomenti));
        };
    }

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

        per (chiave in istanza) {
            if (instance.hasOwnProperty(key)) {
                hub = istanza[key];

                se (!( hub.hubName)) {
                    Non un hub client
                    continuare;
                }

                if (dovrebbeIscriversi) {
                    Vogliamo iscriversi agli eventi hub
                    subscriptionMethod = hub.on;
                } altrimenti {
                    Vogliamo disiscriverci dagli eventi hub
                    subscriptionMethod = hub.off;
                }

                Passa in loop tra tutti i membri dell'hub e trova le funzioni del client hub per iscriversi/disiscriversi
                for (memberKey in hub.client) {
                    if (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = hub.client[memberKey];

                        if (!$.isFunction(memberValue)) {
                            Non una funzione client hub
                            continuare;
                        }

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

    $.hubConnection.prototype.createHubProxies = funzione () {
        var proxies = {};
        this.starting(function () {
            Registra i proxy hub come abbonato
            (istanza, dovrebbeIscriversi)
            registerHubProxies (proxy, vero);

            this._registerSubscribedHubs();
        }).disconnesso(funzione () {
            Disiscrivi tutti i proxy hub quando "disconnettiamo".  Questo serve a garantire che non si aggiungano richiamate funzionali.
            (istanza, dovrebbeIscriversi)
            registerHubProxies (proxy, falso);
        });

        proxy['positionVehicle'] = this.createHubProoxy(''positionVehicle');
        proxy['positionVehicle'].client = { };
        proxies['positionVehicle'].server = {
            ciao: funzione (nome) {
                return proxyes['positionVehicle'].invoke.apply(proxyes['PositionVehicle'], $.merge(["Hello"], $.makeArray(arguments)));
             }
        };

        restituire proxy;
    };

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

}(window.jQuery, window));


Poi, testiamo e il codice è il seguente:



I risultati dei test sono i seguenti:


I primi due messaggi che abbiamo ricevuto sono stati entrambi inviati da noi stessi, e anche noi li abbiamo ricevuti, e il terzo messaggio è stato inviato da me che ho aperto un altro browser, e anche noi l'abbiamo ricevuto.

Quando ho ricevuto il messaggio, non era un websocket, ma in realtà un sondaggio HTTP, perché il nostro js segnalava un errore

Per quanto riguarda il motivo per cui l'errore js è stato segnalato, ne parleremo la prossima volta.









Precedente:asp.net mvc4.0 Installazione di SignalR (1)
Prossimo:Codice errore: 1175. Stai usando la modalità di aggiornamento provatissimo e hai provato ad aggiornare un ta...
 Padrone di casa| Pubblicato su 05/07/2017 14:53:15 |
. .NET appare usando SignalRErrore durante la stretta di mano WebSocket
Durante il processo di sviluppo, ho riscontrato il seguente errore: connessione WebSocket a 'ws://*****' fallita: Errore durante WebSocket handshake: net::ERR_CONNECTION_RESET.

Il motivo per cui il websocket non può essere usato è che il file web.config non è configurato. SignalR per funzionare correttamente richiede l'aggiunta del seguente elemento di configurazione sotto il nodo system.web:



targetFramework impostato su 4.5
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com