Nejprve jsem vytvořil novou složku Hubs pod projektem
Také vytvořte nový soubor PositionVehicle pod složkou, jak je znázorněno na následujícím obrázku:
Projekt znovu postavit a poté na stránce zobrazení odkazujeme na následující dva js soubory
Poznámka!!!
Soubor "/Scripts/jquery.signalR-2.2.2.min.js" je přidán do instalace SignalR a existuje na fyzickém disku
"/signalr/hubs" jeSignalR je generován automaticky, který nelze najít na fyzickém disku!
Podívejme se na js soubor generovaný SignalR, a to následovně:
/*! * ASP.NET JavaScriptová knihovna SignalR v2.2.2 * http://signalr.net/
* * Copyright (c) .NET Foundation. Všechna práva vyhrazena. * Licencováno pod licencí Apache, verze 2.0. Viz License.txt v kořeni projektu pro informace o licenci.
* */
<referenční cesta="..\.\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> <referenční cesta="jquery.signalR.js" /> (funkce ($, okno, nedefinované) { <název parametru="$" type="jQuery" /> "používejte přísné";
if (typeof ($.signalR) !== "funkce") { vyhoďte novou chybu ("SignalR: SignalR není načten. Prosím, ujistěte se, že jquery.signalR-x.js je před ~/signalr/js."); }
var signalR = $.signalR;
function makeProxyCallback(hub, callback) { Návratová funkce () { Nazvěte metodu klientského hubu callback.apply(hub, $.makeArray(arguments)); }; }
function registerHubProxies(instance, shouldSubscribe) { var key, hub, memberKey, memberValue, subscriptionMethod;
pro (klíč v instanci) { if (instance.hasOwnProperty(key)) { hub = instance[key];
if (!( hub.hubName)) { Není to klientský hub pokračujte; }
pokud (by měl Subscribe) { Chceme se přihlásit k odběru hub akcí subscriptionMethod = hub.on; } jinak { Chceme se odhlásit z hub akcí subscriptionMethod = hub.off; }
Projděte všechny členy hubu a najděte funkce klientského hubu pro odběr/odhlášení for (memberKey in hub.client) { if (hub.client.hasOwnProperty(memberKey)) { memberValue = hub.client[memberKey];
if (!$.isFunction(memberValue)) { Není to funkce klientského hubu pokračujte; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = function () { var proxy = {}; this.starting(function () { Zaregistrujte hubové proxy jako odebírané (instance, shouldSubscribe) registerHubProxies(proxy, true);
this._registerSubscribedHubs(); }).disconnected(function () { Odhlásit všechny hubové proxy, když se "odpojíme". Cílem je zajistit, že nebudeme znovu přidávat funkční callbacky. (instance, shouldSubscribe) registerHubProxies(proxy, false); });
proxy servery['positionVehicle'] = this.createHubProxy('positionVehicle'); proxy členy['positionVehicle'].client = { }; proxy členy['positionVehicle'].server = { Ahoj: funkce (název) { return proxy['positionVehicle'].invoke.apply(proxy ['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments))); } };
návratové proxy; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extend(signalR, signalR.hub.createHubProxies());
}(window.jQuery, window));
Pak to otestujeme a kód je následující:
Výsledky testu jsou následující:
První dvě zprávy, které jsme obdrželi, jsme obě poslali my sami, a také jsme je obdrželi, a třetí zprávu jsem poslal já, když jsem otevřel jiný prohlížeč, a také jsme ji obdrželi.
Když jsem zprávu obdržel, nebyl to websocket, ale ve skutečnosti HTTP dotaz, protože náš js hlásil chybu
Co se týče toho, proč byla chyba js nahlášena, o tom si povíme příště.
|