Primero, creé una nueva carpeta Hubs bajo el proyecto
Además, crea un nuevo archivo PositionVehicle bajo la carpeta, como se muestra en la siguiente figura:
Reconstruyamos el proyecto y luego referenciamos los siguientes dos archivos js en la página de visualización
¡¡¡Nota!!!
El archivo "/Scripts/jquery.signalR-2.2.2.min.js" se añade a la instalación de SignalR y existe en el disco físico
"/signalr/hubs" esSignalR se genera automáticamente¡, que no se puede encontrar en el disco físico!
Veamos el archivo js generado por SignalR, de la siguiente manera:
/*! * ASP.NET Biblioteca JavaScript de SignalR v2.2.2 * http://signalr.net/
* * Derechos de autor (c) Fundación .NET. Todos los derechos reservados. * Licenciado bajo la Licencia Apache, Versión 2.0. Consulta License.txt en la raíz del proyecto para información sobre licencias.
* */
<ruta de referencia="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" /> <ruta de referencia="jquery.signalR.js" /> (función ($, ventana, indefinida) { <nombre de la param="$" type="jQuery" /> "usar estricto";
if (typeof ($.signalR) !== "function") { throw new Error("SignalR: SignalR no está cargado. Por favor, asegúrate de que jquery.signalR-x.js se referencia antes de ~/signalr/js."); }
var signalR = $.signalR;
function makeProxyCallback(hub, callback) { función return () { Llamar al método del hub cliente callback.apply(hub, $.makeArray(argumentos)); }; }
function registerHubProxies(instance, shouldSubscribe) { var key, hub, memberKey, memberValue, subscriptionMethod;
para (clave en instancia) { if (instance.hasOwnProperty(key)) { hub = instancia[clave];
si (!( hub.hubName)) { No es un centro de cliente continúa; }
if (deberíaSuscribirse) { Queremos suscribirnos a los eventos del hub subscriptionMethod = hub.on; } else { Queremos darse de baja de los eventos del hub subscriptionMethod = hub.off; }
Haz un bucle entre todos los miembros en el hub y encuentra funciones del hub cliente para suscribirte o cancelarte for (memberKey in hub.client) { if (hub.client.hasOwnProperty(memberKey)) { miemValor = hub.client[memberKey];
if (!$.isFunction(memberValue)) { No es una función de hub de cliente continúa; }
subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue)); } } } } }
$.hubConnection.prototype.createHubProxies = function () { var proxies = {}; this.starting(function () { Registra los proxies del hub como suscritos (instancia, deberíaSuscríbete) registerHubProxies (proxies, cierto);
this._registerSubscribedHubs(); }).desconectado(función () { Cancela la suscripción de todos los proxies del hub cuando "nos desconectemos". Esto es para asegurarnos de que no volvamos a añadir llamadas funcionales. (instancia, deberíaSuscríbete) registerHubProxies (proxies, falso); });
proxies['VehículoPosición'] = esto.createHubProx('VehículoPosición'); proxies['positionVehicle'].client = { }; proxies['positionVehicle'].server = { hola: función (nombre) { return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments))); } };
devolver proxies; };
signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false }); $.extender(signalR, signalR.hub.createHubProxies());
}(window.jConsulta, ventana));
Entonces, vamos a probarlo y el código es el siguiente:
Los resultados de las pruebas son los siguientes:
Los dos primeros mensajes que recibimos los enviamos nosotros mismos, y también los recibimos, y el tercero lo envié yo, que abrí otro navegador, y también lo recibimos.
Cuando recibí el mensaje, no era un websocket, sino una encuesta HTTP, porque nuestro js reportaba un error
En cuanto a por qué se reportó el error js, lo hablaremos la próxima vez.
|