Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 19123|Απάντηση: 1

[ASP.NET] mvc 4.0 Πώς να χρησιμοποιήσετε το SignalR (2)

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 5/7/2017 11:15:08 π.μ. | | | |
Αρχικά, δημιούργησα έναν νέο φάκελο Hubs στο πλαίσιο του έργου

Επίσης, δημιουργήστε ένα νέο αρχείο PositionVehicle κάτω από το φάκελο, όπως φαίνεται στην παρακάτω εικόνα:



Δημιουργήστε ξανά το έργο και, στη συνέχεια, αναφέρουμε τα ακόλουθα δύο αρχεία js στη σελίδα προβολής



Σημείωση!!!

Το αρχείο "/Scripts/jquery.signalR-2.2.2.min.js" προστίθεται στην εγκατάσταση του SignalR και υπάρχει στον φυσικό δίσκο

Το "/signalr/hubs" είναιΤο SignalR δημιουργείται αυτόματα, το οποίο δεν μπορεί να βρεθεί στον φυσικό δίσκο!

Ας ρίξουμε μια ματιά στο αρχείο js που δημιουργήθηκε από το SignalR, ως εξής:

/*!
* ASP.NET Βιβλιοθήκη JavaScript SignalR v2.2.2
* http://signalr.net/
*
* Πνευματικά δικαιώματα (γ) .NET Foundation. Ολα τα δικαιώματα διατηρούνται.
* Άδεια χρήσης με την άδεια Apache, Έκδοση 2.0. Δείτε License.txt στη ρίζα του έργου για πληροφορίες άδειας χρήσης.
*
*/

<διαδρομή αναφοράς="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" />
<διαδρομή αναφοράς="jquery.signalR.js" />
(συνάρτηση ($, παράθυρο, απροσδιόριστο) {
    <param name="$" type="jQuery" />
    "χρησιμοποιήστε αυστηρό"?

    if (typeof ($.signalR) !== "function") {
        ρίξε νέο Error("SignalR: Το SignalR δεν έχει φορτωθεί. Βεβαιωθείτε ότι jquery.signalR-x.js αναφέρεται πριν από το ~/signalr/js.");
    }

    var signalR = $.signalR;

    συνάρτηση makeProxyCallback(hub, callback) {
        συνάρτηση επιστροφής () {
            Καλέστε τη μέθοδο του κέντρου πελάτη
            callback.apply(hub, $.makeArray(arguments));
        };
    }

    συνάρτηση registerHubProxies(instance, shouldSubscribe) {
        var κλειδί, hub, memberKey, memberValue, subscriptionMethod;

        for (κλειδί για παράδειγμα) {
            if (instance.hasOwnProperty(key)) {
                hub = παρουσία[κλειδί];

                αν (!( hub.hubΌνομα)) {
                    Δεν είναι κέντρο πελάτη
                    να συνεχίσει;
                }

                αν (πρέπειΕγγραφή) {
                    Θέλουμε να εγγραφούμε στις εκδηλώσεις του κόμβου
                    subscriptionMethod = hub.on;
                } αλλιώς {
                    Θέλουμε να διαγραφούμε από τις εκδηλώσεις του hub
                    subscriptionMethod = hub.off;
                }

                Κάντε βρόχο σε όλα τα μέλη στο hub και βρείτε τις λειτουργίες του client hub για εγγραφή/κατάργηση εγγραφής
                for (memberKey στο hub.client) {
                    αν (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = hub.client[memberKey];

                        if (!$.isFunction(memberValue)) {
                            Δεν είναι λειτουργία διανομέα πελάτη
                            να συνεχίσει;
                        }

                        subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue));
                    }
                }
            }
        }
    }

    $.hubConnection.prototype.createHubProxies = συνάρτηση () {
        var πληρεξούσιοι = {};
        this.starting(συνάρτηση () {
            Καταχωρίστε τους διακομιστές μεσολάβησης διανομέα ως εγγεγραμμένους
            (παράδειγμα, shouldSubscribe)
            registerHubProxies(διακομιστής μεσολάβησης, αληθές);

            this._registerSubscribedHubs();
        }).disconnected(συνάρτηση () {
            Καταργήστε την εγγραφή όλων των διακομιστών μεσολάβησης όταν "αποσυνδεθούμε".  Αυτό γίνεται για να διασφαλιστεί ότι δεν θα προσθέσουμε ξανά λειτουργικές επανακλήσεις.
            (παράδειγμα, shouldSubscribe)
            registerHubProxies(διακομιστές μεσολάβησης, false);
        });

        proxies['positionVehicle'] = this.createHubProxy('positionVehicle');
        proxies['positionVehicle'].client = { };
        proxies['positionVehicle'].server = {
            hello: function (όνομα) {
                return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments)));
             }
        };

        πληρεξούσιοι επιστροφής·
    };

    signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false });
    $.extend(signalR, signalR.hub.createHubProxies());

}(window.jQuery, window));


Στη συνέχεια, ας το δοκιμάσουμε και ο κώδικας είναι ο εξής:



Τα αποτελέσματα των δοκιμών είναι τα εξής:


Τα δύο πρώτα μηνύματα που λάβαμε στάλθηκαν και τα δύο από εμάς, και τα λάβαμε επίσης, και το τρίτο μήνυμα στάλθηκε από εμένα που άνοιξα ένα άλλο πρόγραμμα περιήγησης και το λάβαμε επίσης.

Όταν έλαβα το μήνυμα, δεν ήταν websocket, αλλά στην πραγματικότητα μια δημοσκόπηση HTTP, επειδή το js μας ανέφερε ένα σφάλμα

Όσο για το γιατί αναφέρθηκε το σφάλμα js, θα το συζητήσουμε την επόμενη φορά.









Προηγούμενος:asp.net mvc4.0 Εγκατάσταση του SignalR (1)
Επόμενος:Κωδικός σφάλματος: 1175. Χρησιμοποιείτε τη λειτουργία ασφαλούς ενημέρωσης και προσπαθήσατε να ενημερώσετε ένα ta...
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 5/7/2017 2:53:15 μ.μ. |
. Το .NET εμφανίζεται χρησιμοποιώντας το SignalRΣφάλμα κατά τη χειραψία WebSocket
Κατά τη διαδικασία ανάπτυξης, αντιμετώπισα το ακόλουθο σφάλμα: Η σύνδεση WebSocket στο 'ws://*****' απέτυχε: Σφάλμα κατά τη χειραψία WebSocket: net::ERR_CONNECTION_RESET.

Ο λόγος για τον οποίο δεν μπορεί να χρησιμοποιηθεί το websocket είναι επειδή το αρχείο web.config δεν έχει ρυθμιστεί. Το SignalR για να εκτελεστεί σωστά απαιτεί την προσθήκη του ακόλουθου στοιχείου διαμόρφωσης στον κόμβο system.web:



Το πλαίσιο στόχου ορίζεται σε 4.5
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com