Najprv som vytvoril nový priečinok Hubs pod projektom
Tiež vytvorte nový súbor PositionVehicle v priečinku, ako je znázornené na nasledujúcom obrázku:
Znovu postavte projekt a potom na stránke zobrazenia odkazujeme na nasledujúce dva js súbory
Nota!!!
Súbor "/Scripts/jquery.signalR-2.2.2.min.js" je pridaný do inštalácie SignalR a existuje na fyzickom disku
"/signalr/hubs" jeSignalR sa generuje automaticky, ktorý sa nenachádza na fyzickom disku!
Pozrime sa na js súbor generovaný SignalR, nasledovne:
/*! * ASP.NET SignalR JavaScript Library v2.2.2 * http://signalr.net/
* * Copyright (c) .NET Foundation. Všetky práva vyhradené. * Licencované pod licenciou Apache, verzia 2.0. Pozrite si License.txt v koreňovej časti projektu pre informácie o licenciách.
* */
<referenčná cesta="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> <referenčná cesta="jquery.signalR.js" /> (funkcia ($, okno, nedefinované) { <názov parametra="$" typ="jQuery" /> "používajte prísne";
ak (typeof ($.signalR) !== "funkcia") { throw new Error("SignalR: SignalR sa nenačíta. Prosím, uistite sa, že jquery.signalR-x.js je referencované pred ~/signalr/js."); }
var signalR = $.signalR;
function makeProxyCallback(hub, callback) { Návratová funkcia () { Volajte metódu client hub callback.apply(hub, $.makeArray(arguments)); }; }
function registerHubProxies(instance, shouldSubscribe) { var key, hub, memberKey, memberValue, subscriptionMethod;
pre (kľúč v inštancii) { if (instance.hasOwnProperty(key)) { hub = inštancia[key];
ak (!( hub.hubName)) { Nie je to klientské centrum pokračovať; }
ak (by mal Subscribe) { Chceme sa prihlásiť na odber hubových podujatí subscriptionMethod = hub.on; } inak { Chceme sa odhlásiť z hubových podujatí subscriptionMethod = hub.off; }
Prejdite všetkými členmi hubu a nájdite funkcie klientského hubu na odber/odhlásenie for (memberKey in hub.client) { if (hub.client.hasOwnProperty(memberKey)) { memberValue = hub.client[memberKey];
if (!$.isFunction(memberValue)) { Nie je to funkcia klienta pokračovať; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = function () { var proxy = {}; this.starting(function () { Zaregistrujte hub proxy ako prihlásené (inštancia, mal by sa prihlásiť) registerHubProxies (proxy, true);
this._registerSubscribedHubs(); }).disconnected(function () { Odhláste všetky hub proxy, keď sa "odpojíme". Je to preto, aby sme nepridávali funkčné spätné volania. (inštancia, mal by sa prihlásiť) registerHubProxies(proxy, false); });
proxy['positionVehicle'] = this.createHubProxy('positionVehicle'); proxy['positionVehicle'].client = { }; proxies['positionVehicle'].server = { Ahoj: Function (meno) { return proxy['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments))); } };
návratové proxy; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extend(signalR, signalR.hub.createHubProxies());
}(window.jQuery, window));
Potom to otestujme a kód je nasledovný:
Výsledky testov sú nasledovné:
Prvé dve správy, ktoré sme dostali, sme obe poslali my sami, a aj my sme ich dostali, a tretiu správu som poslal ja, keď som otvoril ďalší prehliadač, a tiež sme ju dostali.
Keď som dostal správu, nebola to websocket, ale vlastne HTTP dotaz, pretože náš JS hlásil chybu
Čo sa týka toho, prečo bola chyba js nahlásená, povieme si o tom nabudúce.
|