Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 19123|Répondre: 1

[ASP.NET] mvc 4.0 Comment utiliser SignalR (2)

[Copié le lien]
Publié sur 05/07/2017 11:15:08 | | | |
D’abord, j’ai créé un nouveau dossier Hubs sous le projet

Créez également un nouveau fichier PositionVehicle sous le dossier, comme montré dans la figure suivante :



Reconstruisons le projet, puis nous référençons les deux fichiers js suivants sur la page de vue



Note!!!

Le fichier « /Scripts/jquery.signalR-2.2.2.min.js » est ajouté à l’installation de SignalR et existe sur le disque physique

« /signalr/hubs » estSignalR est généré automatiquement, qui ne peut pas être trouvé sur le disque physique !

Jetons un œil au fichier js généré par SignalR, comme suit :

/*!
* ASP.NET Bibliothèque JavaScript SignalR v2.2.2
* http://signalr.net/
*
* Droits d’auteur (c) Fondation .NET. Tous droits réservés.
* Sous licence Apache, version 2.0. Voir License.txt dans la racine du projet pour les informations sur la licence.
*
*/

<chemin de référence= »..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js » />
<chemin de référence="jquery.signalR.js » />
(fonction ($, fenêtre, indéfinie) {
    <nom du param="$ » type="jQuery » />
    « utiliser strictement » ;

    if (typeof ($.signalR) !== « function ») {
        lancer une nouvelle Erreur ("SignalR : SignalR n’est pas chargé. Veuillez vous assurer que jquery.signalR-x.js est référencé avant ~/signalr/js.") ;
    }

    var signalR = $.signalR ;

    function makeProxyCallback(hub, callback) {
        fonction de retour () {
            Méthode du hub client
            callback.apply(hub, $.makeArray(arguments)) ;
        };
    }

    function registerHubProxies(instance, shouldSubscribe) {
        var key, hub, memberKey, memberValue, subscriptionMethod ;

        pour (clé en instance) {
            if (instance.hasOwnProperty(key)) {
                hub = instance[clé] ;

                si ( !( hub.hubName)) {
                    Ce n’est pas un hub client
                    continuer ;
                }

                if (devraitS’Abonner) {
                    Nous voulons nous abonner aux événements du hub
                    subscriptionMethod = hub.on ;
                } else {
                    Nous voulons nous désabonner des événements du hub
                    subscriptionMethod = hub.off ;
                }

                Faites passer en boucle tous les membres du hub et trouvez les fonctions du hub client pour vous abonner/désabonner
                for (memberKey in hub.client) {
                    if (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = born.client[memberKey] ;

                        if ( !$.isFunction(memberValue)) {
                            Ce n’est pas une fonction hub client
                            continuer ;
                        }

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

    $.hubConnection.prototype.createHubProxies = fonction () {
        var proxies = {} ;
        this.starting(function () {
            Enregistrez les proxies du hub comme abonnés
            (instance, shouldSubscribe)
            registerHubProxies (proxyes, vrai) ;

            this._registerSubscribedHubs() ;
        }).déconnecté(fonction () {
            Désabonnement de tous les proxies du hub lorsque nous « nous déconnectons ».  Cela vise à s’assurer que nous ne réajoutons pas de rappels fonctionnels.
            (instance, shouldSubscribe)
            registerHubProxies (proxyes, faux) ;
        });

        proxyes['VehiclePosition'] = this.createHubProoxy('VehiclePosition') ;
        proxies['positionVehicle'].client = { } ;
        proxies['positionVehicle'].server = {
            hello : fonction (nom) {
                return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments))) ;
             }
        };

        Retour des mandataires ;
    };

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

}(window.jQuery, fenêtre)) ;


Ensuite, testons et le code est le suivant :



Les résultats des tests sont les suivants :


Les deux premiers messages que nous avons reçus ont tous deux été envoyés par nous-mêmes, et nous les avons aussi reçus, et le troisième message a été envoyé par moi qui ai ouvert un autre navigateur, et nous l’avons aussi reçu.

Quand j’ai reçu le message, ce n’était pas un websocket, mais en fait un sondage HTTP, car notre js signalait une erreur

Quant à la raison pour laquelle l’erreur js a été signalée, nous en parlerons la prochaine fois.









Précédent:asp.net mvc4.0 Installation de SignalR (1)
Prochain:Code d’erreur : 1175. Vous utilisez le mode de mise à jour sans échec et vous avez essayé de mettre à jour un ta...
 Propriétaire| Publié sur 05/07/2017 14:53:15 |
. .NET apparaît via SignalRErreur lors de la poignée de main WebSocket
Pendant le développement, j’ai rencontré l’erreur suivante : Connexion WebSocket à 'ws://*****' échouée : Erreur lors de la poignée de main WebSocket : net ::ERR_CONNECTION_RESET.

La raison pour laquelle le websocket ne peut pas être utilisé est que le fichier web.config n’est pas configuré. Pour que SignalR fonctionne correctement nécessite d’ajouter l’élément de configuration suivant sous le nœud system.web :



TargetFramework réglé à 4.5
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com