Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 19123|Respuesta: 1

[ASP.NET] MVC 4.0 Cómo usar SignalR (2)

[Copiar enlace]
Publicado en 5/7/2017 11:15:08 | | | |
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.









Anterior:asp.net mvc4.0 Instalando SignalR (1)
Próximo:Código de error: 1175. Estás usando el modo de actualización segura e intentaste actualizar un ta...
 Propietario| Publicado en 5/7/2017 14:53:15 |
. .NET aparece usando SignalRError durante el handshake de WebSocket
Durante el proceso de desarrollo, me encontré con el siguiente error: Falló la conexión de WebSocket a 'ws://*****': Error durante el handshake: net::ERR_CONNECTION_RESET.

La razón por la que el websocket no puede usarse es porque el archivo web.config no está configurado. Para que SignalR funcione correctamente requiere añadir el siguiente elemento de configuración bajo el nodo system.web:



Marco de objetivos configurado en 4.5
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com