Mai întâi, am creat un folder nou Hubs sub proiect
De asemenea, creează un nou fișier PositionVehicle sub folder, așa cum se arată în figura următoare:
Reconstruim proiectul, apoi facem referire la următoarele două fișiere js pe pagina de vizualizare
Notă!!!
Fișierul "/Scripts/jquery.signalR-2.2.2.min.js" este adăugat la instalarea SignalR și există pe discul fizic
"/signalr/hubs" esteSignalR este generat automat, care nu poate fi găsit pe discul fizic!
Să aruncăm o privire asupra fișierului js generat de SignalR, după cum urmează:
/*! * ASP.NET Biblioteca JavaScript SignalR v2.2.2 * http://signalr.net/
* * Drepturi de autor (c) Fundația .NET. Toate drepturile rezervate. * Licențiat sub Apache License, Versiunea 2.0. Vezi License.txt în rădăcina proiectului pentru informații despre licențe.
* */
<calea de referință="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> <calea de referință="jquery.signalR.js" /> (funcție ($, fereastră, nedefinită) { <param name="$" type="jQuery" /> "folosește strict";
if (typeof ($.signalR) !== "function") { throw new Error ("SignalR: SignalR nu este încărcat. Vă rugăm să vă asigurați că jquery.signalR-x.js este menționat înainte de ~/signalr/js."); }
var signalR = $.signalR;
function makeProxyCallback(hub, callback) { funcția return () { Metoda de apelare a hub-ului client callback.apply(hub, $.makeArray(argumente)); }; }
function registerHubProxies(instance, shouldSubscribe) { var key, hub, memberKey, memberValue, subscriptionMethod;
pentru (cheie în instanță) { if (instance.hasOwnProperty(key)) { hub = instanță[cheie];
dacă (!( hub.hubName)) { Nu un hub client continuă; }
if (shouldSubscribe) { Vrem să ne abonăm la evenimentele hub subscriptionMethod = hub.on; } altfel { Vrem să ne dezabonăm de la evenimentele hub subscriptionMethod = hub.off; }
Parcurge toți membrii de pe hub și găsește funcții client hub pentru a te abona/dezabona for (memberKey în hub.client) { if (hub.client.hasOwnProperty(memberKey)) { memberValue = hub.client[memberKey];
if (!$.isFunction(memberValue)) { Nu o funcție de hub client continuă; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = function () { var proxyes = {}; this.starting(function () { Înregistrează proxy-urile hub-ului ca fiind abonați (instanță, ar trebui să se aboneze) registerHubProxies (proxy-uri, adevărat);
this._registerSubscribedHubs(); }).deconectat(funcție () { Dezabonează toate proxy-urile hub-ului când "deconectăm". Acest lucru este pentru a ne asigura că nu adăugăm din nou apeluri funcționale. (instanță, ar trebui să se aboneze) registerHubProxies(proxy-uri, false); });
proxy['VehiclePosition'] = this.createHubProoxy('VehiclePosition'); proxy['positionVehicle'].client = { }; proxies['positionVehicle'].server = { Bună: funcție (nume) { return proxys['PositionVehicle'].invoke.apply(proxyes['PositionVehicle'], $.merge(["Hello"], $.makeArray(arguments))); } };
returnarea proxy-urilor; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extend(signalR, signalR.hub.createHubProxies());
}(window.jQuery, fereastră));
Apoi, să testăm și codul este următorul:
Rezultatele testelor sunt următoarele:
Primele două mesaje pe care le-am primit au fost trimise de noi, și le-am primit și noi, iar al treilea mesaj a fost trimis de mine, care am deschis un alt browser, și l-am primit și el.
Când am primit mesajul, nu era un websocket, ci de fapt un sondaj HTTP, pentru că js-ul nostru a raportat o eroare
Cât despre motivul pentru care a fost raportată eroarea js, vom discuta data viitoare.
|