Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 19123|Yanıt: 1

[ASP.NET] mvc 4.0 SignalR nasıl kullanılır (2)

[Bağlantıyı kopyala]
Yayınlandı 5.07.2017 11:15:08 | | | |
İ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.









Önceki:asp.net mvc4.0 SignalR Kurulumu (1)
Önümüzdeki:Hata Kodu: 1175. Güvenli güncelleme modunu kullanıyorsun ve bir güncelleme yapmaya çalıştın...
 Ev sahibi| Yayınlandı 5.07.2017 14:53:15 |
. .NET, SignalR kullanılarak görünürWebSocket el sıkışma sırasında hata
Geliştirme sürecinde şu hatayla karşılaştım: WebSocket'in 'ws://*****' ile bağlantısı başarısız oldu: WebSocket el sıkışması sırasında hata: net::ERR_CONNECTION_RESET.

Websocket'in kullanılamamasının sebebi, web.config dosyasının yapılandırılmamış olmasıdır. SignalR'nin doğru çalışması için system.web düğümünün altına aşağıdaki yapılandırma öğesinin eklenmesi gerekir:



targetFramework 4.5 olarak ayarlandı
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com