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.
|