İlk olarak, projenin altında yeni bir Hubs klasörü oluşturdum
Ayrıca, aşağıdaki şekilde gösterildiği gibi klasörün altında yeni bir PositionVehicle dosyası oluşturun:
Projeyi yeniden inşa ediyoruz ve ardından görüntüleme sayfasında aşağıdaki iki js dosyasına referans veriyoruz
Not!!!
"/Scripts/jquery.signalR-2.2.2.min.js" dosyası SignalR kurulumuna eklenir ve fiziksel diskte bulunur
"/signalr/hubs"SignalR otomatik olarak üretilir, ki bu fiziksel diskte bulunamıyor!
SignalR tarafından oluşturulan js dosyasına şu şekilde bakalım:
/*! * ASP.NET SignalR JavaScript Library v2.2.2 * http://signalr.net/
* * Telif Hakkı (c) .NET Vakfı. Tüm haklar saklıdır. * Apache Lisansı, Sürüm 2.0 lisanslı. Lisans bilgisi için proje kökündeki License.txt bakınız.
* */
<referans yolu="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> <referans yolu="jquery.signalR.js" /> (fonksiyon ($, pencere, tanımlanmamış) { <param name="$" type="jQuery" /> "sıkı kullan";
if (typeof ($.signalR) !== "function") { yeni Hata("SignalR: SignalR yüklenmedi. Lütfen jquery.signalR-x.js'in ~/signalr/js."den önce referans alındığından emin olun; }
var signalR = $.signalR;
function makeProxyCallback(hub, callback) { Dönüş fonksiyonu () { İstemci hub yöntemini çağırın callback.apply(hub, $.makeArray(argümanlar)); }; }
function registerHubProxies(instance, shouldSubscribe) { var key, hub, memberKey, memberValue, subscriptionMethod;
for (örneğin anahtar) { if (instance.hasOwnProperty(key)) { hub = instance[key];
if (!( hub.hubName)) { Bir istemci merkezi değil devam et; }
if (shouldSubscribe) { Merkez etkinliklerine abone olmak istiyoruz subscriptionMethod = hub.on; } else { Merkez etkinliklerinden abonelikten çıkmak istiyoruz subscriptionMethod = hub.off; }
Merkezdeki tüm üyeler arasında döngü yapın ve abone olup abonelikten çıkmak için istemci merkezi fonksiyonlarını bulun for (memberKey in hub.client) { if (hub.client.hasOwnProperty(memberKey)) { memberValue = hub.client[memberKey];
if (!$.isFunction(memberValue)) { İstemci merkezi fonksiyonu değil devam et; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = function () { var proxyes = {}; this.starting(function () { Merkez proxy'lerini abone olarak kaydet (örneğin, shouldSubscribe) registerHubProxies (proxy, doğru);
this._registerSubscribedHubs(); }).disconnected(fonksiyon () { Bağlantı kesildiğinde tüm hub proxy'lerini abonelikten çıkarın. Bu, fonksiyonel geri dönüşleri yeniden eklemememiz için yapılıyor. (örneğin, shouldSubscribe) registerHubProxies (proxy'ler, yanlış); });
proxyes['positionVehicle'] = this.createHubProxy('positionVehicle'); proxyes['positionVehicle'].client = { }; proxyes['positionVehicle'].server = { merhaba: fonksiyon (isim) { return proxyes['positionVehicle'].invoke.apply(proxyes['positionVehicle'], $.merge(["Hello"], $.makeArray(argümanlar))); } };
proxy'leri geri getirmek; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extend(signalR, signalR.hub.createHubProxies());
}(window.jQuery, window));
Sonra, test edelim ve kod şöyle:
Test sonuçları aşağıdaki gibidir:
Aldığımız ilk iki mesajı da kendimiz gönderdik, onları da aldık, üçüncü mesajı ise başka bir tarayıcı açtığım ve biz de gönderdik.
Mesajı aldığımda bu bir web soketi değil, aslında bir HTTP anketiydi çünkü js hata bildirdi
Js hatasının neden bildirildiğine gelince, bir dahaki sefere konuşacağız.
|