Először egy új Hubs mappát hoztam létre a projekt alatt
Emellett hozz létre egy új PositionVehicle fájlt a mappa alatt, ahogy az alábbi ábrán látható:
Újraépítjük a projektet, majd a következő két js fájlra hivatkozunk a megtekintési oldalon
Jegyzet!!!
A "/Scripts/jquery.signalR-2.2.2.min.js" fájl hozzáadódik a SignalR telepítéséhez, és a fizikai lemezen található
"/signalr/hubs" azA SignalR automatikusan generálódik, ami nem található meg a fizikai lemezen!
Nézzük meg a SignalR által generált js fájlt a következőkép:
/*! * ASP.NET SignalR JavaScript Library v2.2.2 * http://signalr.net/
* * Szerzői jog (c) .NET Foundation. Minden jog fenntartva. * Az Apache licenc alatt, 2.0 verzió alá van engedéllyel. A licencinformációért lásd License.txt a projekt gyökér részén.
* */
<reference path="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> <referencia út="jquery.signalR.js" /> (függvény ($, ablak, meghatározatlan) { <param name="$" type="jQuery" /> "használj szigorúan";
if (typeof ($.signalR) !== "function") { throw new Error("SignalR: SignalR nincs betöltve. Kérjük, jquery.signalR-x.js hivatkozva legyen a ~/signalr/js."); }
var signalR = $.signalR;
function makeProxyCallback(hub, callback) { Return függvény () { Hívjuk a kliens hub metódust. callback.apply(hub, $.makeArray(arguments)); }; }
function registerHubProxies(instance, shouldSubscribe) { var key, hub, memberKey, memberValue, subscriptionMethod;
for (kulcs a instance) { if (instance.hasOwnProperty(key)) { hub = instance[key];
ha (!( hub.hubName)) { Nem kliensközpont folytasd; }
if (shouldSubscribe) { Szeretnénk feliratkozni a központi eseményekre subscriptionMethod = hub.on; } más { Le akarunk mondani a központi eseményekről subscriptionMethod = hub.off; }
Körbefut az összes tag végig a hubon, és keress kliens hub funkciókat az előfizetéshez vagy lemondáshoz for (memberKey in hub.client) { if (hub.client.hasOwnProperty(memberKey)) { memberValue = hub.client[memberKey];
if (!$.isFunction(memberValue)) { Nem kliens hub funkció folytasd; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = function () { var proxyes = {}; this.starting(function () { Regisztráld a hub proxy-kat előfizetőként (instance, shouldSubscribe) registerHubProxies (proxyk, true);
this._registerSubscribedHubs(); }).disconnected(function () { Töröld le az összes hub proxyt, amikor "leszakadunk". Ez azért van, hogy ne adjunk újra funkcionális visszahívásokat. (instance, shouldSubscribe) registerHubProxies (proxyk, hamis); });
proxyes['positionVehicle'] = this.createHubProxy('positionVehicle'); proxyes['positionVehicle'].client = { }; proxyes['positionVehicle'].server = { hello: function (name) { return proxyes['positionVehicle'].invoke.apply(proxyes['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments))); } };
visszaküldött proxyk; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extend(signalR, signalR.hub.createHubProxies());
}(window.jQuery, window));
Aztán próbáljuk ki, és a kód a következő:
A teszteredmények a következők:
Az első két üzenetet mindkettő mi küldtük, és mi is megkaptuk, a harmadik üzenetet pedig én küldtem, aki megnyitottam egy másik böngészőt, és mi is megkaptuk.
Amikor megkaptam az üzenetet, nem websocket volt, hanem egy HTTP felmérés, mert a js-ünk hibát jelentett
Ami azt illeti, miért jelentették a js hibát, majd legközelebb beszélünk róla.
|