Първо, създадох нова папка Hubs под проекта
Също така, създайте нов файл PositionVehicle под папката, както е показано на следващата фигура:
Възстановете проекта и след това се позоваваме на следните два js файла на страницата за изглед
Бележка!!!
Файлът "/Scripts/jquery.signalR-2.2.2.min.js" се добавя към инсталацията на SignalR и съществува на физическия диск
"/signalr/hubs" еSignalR се генерира автоматично, който не може да се намери на физическия диск!
Нека разгледаме js файла, генериран от SignalR, както следва:
/*! * ASP.NET SignalR JavaScript библиотека v2.2.2 * http://signalr.net/
* * Авторски права (c) .NET Foundation. Всички права запазени. * Лицензиран под лиценз Apache, версия 2.0. Вижте License.txt в root проекта за информация за лиценз.
* */
<reference path="..\.\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> <reference path="jquery.signalR.js" /> (функция ($, прозорец, неопределено) { <param name="$" type="jQuery" /> "използвайте строго";
ако (typeof ($.signalR) !== "функция") { throw new Error("SignalR: SignalR не е зареден. Моля, уверете се, че jquery.signalR-x.js е споменато преди ~/signalr/js."); }
var signalR = $.signalR;
function makeProxyCallback(hub, callback) { Функция за връщане () { Извикай метода client hub callback.apply(hub, $.makeArray(arguments)); }; }
function registerHubProxies(instance, oughtSubscribe) { var key, hub, memberKey, memberValue, subscriptionMethod;
за (ключ в пример) { ако (instance.hasOwnProperty(key)) { hub = instance[key];
ако (!( hub.hubName)) { Не е клиентски хъб продължете; }
ако (трябваSubscribe) { Искаме да се абонираме за събитията в хъба subscriptionMethod = hub.on; } else { Искаме да се отпишем от събитията в хъба subscriptionMethod = hub.off; }
Прегледайте всички членове в хъба и намерете функции на клиентския хъб, за да се абонирате или откажете за (memberKey в hub.client) { if (hub.client.hasOwnProperty(memberKey)) { memberValue = hub.client[memberKey];
ако (!$.isFunction(memberValue)) { Не функция за клиентски хъб продължете; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = функция () { VAR проксита = {}; this.starting(функция () { Регистрирайте хъбовите проксита като абонирани (инстанция, трябваАбонамент) registerHubProxies (проксита, вярно);
this._registerSubscribedHubs(); }).disconnected(функция () { Отпишете се от всички проксита на хъба, когато "прекъснем". Това е, за да гарантираме, че няма да добавяме отново функционални обратни повиквания. (инстанция, трябваАбонамент) registerHubProxies (проксита, невярно); });
proxies['positionVehicle'] = this.createHubProxy('positionVehicle'); proxies['positionVehicle'].client = { }; proxies['positionVehicle'].server = { здравейте: функция (име) { return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments))); } };
връщане на проксита; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extend(signalR, signalR.hub.createHubProxies());
}(window.jQuery, прозорец));
След това нека го тестваме и кодът е следният:
Резултатите от теста са следните:
Първите две съобщения, които получихме, бяха изпратени от нас сами, и ние също ги получихме, а третото съобщение беше изпратено от мен, който отвори друг браузър и също го получихме.
Когато получих съобщението, не беше websocket, а всъщност HTTP анкета, защото нашият js съобщи за грешка
Що се отнася до причината за докладване на грешката js, ще говорим за това следващия път.
|