Pirma, aš sukūriau naują Hubs aplanką pagal projektą
Be to, aplanke sukurkite naują "PositionVehicle" failą, kaip parodyta šiame paveikslėlyje:
Iš naujo sukurkite projektą, tada peržiūros puslapyje nurodome šiuos du js failus
Nata!!!
Failas "/Scripts/jquery.signalR-2.2.2.min.js" pridedamas prie "SignalR" diegimo ir yra fiziniame diske
"/signalr/hubs" yraSignalR generuojamas automatiškai, kurio negalima rasti fiziniame diske!
Pažvelkime į "SignalR" sugeneruotą js failą taip:
/*! * ASP.NET SignalR JavaScript biblioteka v2.2.2 * http://signalr.net/
* * Autorių teisės (c) .NET Foundation. Visos teisės saugomos. * Licencijuota pagal "Apache" licenciją, 2.0 versiją. Licencijos informacijos ieškokite License.txt projekto šaknyje.
* */
<reference path="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> <nuorodos kelias="jquery.signalR.js" /> (funkcija ($, langas, neapibrėžta) { <param name="$" type="jQuery" /> "naudoti griežtai";
if (typeof ($.signalR) !== "funkcija") { mesti naują klaidą("SignalR: SignalR neįkeltas. Įsitikinkite jquery.signalR-x.js yra nurodyta prieš ~/signalr/js."); }
var signalR = $.signalR;
funkcija makeProxyCallback(šakotuvas, atgalinis skambutis) { grąžinimo funkcija () { Skambinkite klientų telkinio metodui callback.apply(centras, $.makeArray(argumentai)); }; }
funkcija registerHubProxies(instance, shouldSubscribe) { var raktas, hub, memberKey, memberValue, subscriptionMethod;
for (pavyzdžio raktas) { if (instance.hasOwnProperty(raktas)) { hub = instance[raktas];
jei (!( hub.hubName)) { Ne klientų telkinys tęsti; }
if (shouldSubscribe) { Norime užsiprenumeruoti centro renginius subscriptionMethod = hub.on; } else { Norime atsisakyti centro renginių prenumeratos subscriptionMethod = hub.off; }
Peržiūrėkite visus telkinio narius ir raskite klientų telkinio funkcijas, kad galėtumėte užsiprenumeruoti / atsisakyti prenumeratos for (memberKey hub.client) { if (hub.client.hasOwnProperty(memberKey)) { memberValue = hub.client[memberKey];
if (!$.isFunction(memberValue)) { Ne kliento telkinio funkcija tęsti; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = funkcija () { var proxy = {}; this.starting(funkcija () { Koncentratoriaus tarpinių serverių registravimas kaip prenumeruojamas (pavyzdys, turėtųPrenumeruoti) registerHubProxies(tarpiniai serveriai, tiesa);
this._registerSubscribedHubs(); }).disconnected(funkcija () { Atsisakykite visų šakotuvo tarpinių serverių prenumeratos, kai "atsijungiame". Taip siekiama užtikrinti, kad iš naujo nepridėtume funkcinių atgalinių skambučių. (pavyzdys, turėtųPrenumeruoti) registerHubProxies(tarpiniai serveriai, klaidingi); });
proxies['positionVehicle'] = this.createHubProxy('positionVehicle'); proxies['positionVehicle'].client = { }; proxies['positionVehicle'].server = { Sveiki: funkcija (pavadinimas) { return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(argumentai))); } };
grąžinti įgaliotinius; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extend(signalR, signalR.hub.createHubProxies());
}(window.jQuery, langas));
Tada išbandykime ir kodas yra toks:
Bandymo rezultatai yra tokie:
Pirmuosius du pranešimus, kuriuos gavome, išsiuntėme patys, juos taip pat gavome, o trečią pranešimą atsiuntiau aš, atidaręs kitą naršyklę, ir mes taip pat jį gavome.
Kai gavau pranešimą, tai buvo ne websocket, bet iš tikrųjų HTTP apklausa, nes mūsų js pranešė apie klaidą
Kalbant apie tai, kodėl buvo pranešta apie js klaidą, apie tai kalbėsime kitą kartą.
|