marco actual WebSocket Netty Netty aprendizaje + WebSocket proyectos de adquisición de datos de incendios de cambio de moneda

  En términos de tecnología WebSocket, de hecho, proviene de la tecnología push servidor, en realidad, muy a menudo los datos requeridos está en constante cambio, como los datos del mercado de valores, el software de chat, y por lo tanto una necesidad de un cliente quiere obtener en tiempo real sin actualizar la página tecnología de servidor a los datos más recientes, mientras que la adquisición de datos anterior se basa en el cliente solicita de forma activa, el servidor devuelve los datos correspondientes. Por lo que habrá una tecnología push servidor.

  Servidor de inserción principalmente por lo siguiente: Ajax corta de votación, el Ajax de sondeo largo, SSE, la transmisión HTTP, WebSocket.

En primer lugar, la tecnología push servidor

  1, corta de votación Ajax

  Simple, el tiempo de cliente (navegador) para enviar una petición al servidor para obtener los últimos datos. Se puede lograr mediante la activación de ajax solicitud por un temporizador.

  Pros: la aplicación es muy simple, al final JS para hacer algunos cambios pueden ser, sin ningún tipo de cambios en el servicio de back-end;

  Desventajas: intervalo de sondeo es demasiado largo, el usuario puede hacer que los datos recibidos no se puede actualizar oportunamente; intervalo de sondeo es demasiado corta, una solicitud de consulta provocará aumento excesivo de la carga en el lado del servidor.

          

   Código es el siguiente:

// cada dos segundos activa una solicitud Ajax, obtener los últimos datos de 
la función setInterval (function () {
    // hacer algo de Ajax a aquí Papel pintado de llamadas Recuperar últimos datos 
}, 2000);

  2, Ajax sondeo largo

  Ajax sobre la base de la votación hizo poca mejora, cuando el extremo posterior de los datos no se actualiza en respuesta a no regresar vacío, pero se ha mantenido conectado al extremo trasero, el extremo posterior hasta que los cambios en los datos, y se cierra la solicitud de conexión al extremo distal correspondiente recibido los datos, una vez más, iniciar una solicitud para el back-end, y los datos del proceso acaba de recibir.

  • El cliente inicia una petición al servidor (http petición)
  • conexión con el servidor permanece abierta hasta que los datos pueden ser enviados al cliente, y luego devuelve el (respuesta HTTP) solicitado
  • Después de que el cliente recibe los datos devueltos por el servidor, procesamiento de datos, e inmediatamente iniciar una nueva solicitud
            

  ventajas:

  • ¿Puede el acceso oportuno a los datos más recientes
  • En comparación con la estrategia de votación para reducir el número de solicitudes

  desventajas:

  Siempre conectado al servidor, no puede ser liberado, debido al número limitado de conexiones que pueden ser procesados ​​por un servidor, cuando el servidor alcanza el límite superior del procesamiento, el servidor no puede responder a nuevas solicitudes

  Código es el siguiente:   

función asíncrona () { 
    $ .ajax ({ 
        url: 'http://api.3g.qq.com' , 
        el éxito: function () { 
            asíncrono (); 
            // código de éxito 
        } 
    }); 
}

  Servlet3 en tareas asíncronas y DeferedResult primavera trae están utilizando mucho la conexión Ajax.

  3, HTTP 流

  Transmisión HTTP diferente de la votación y método de sondeo de largo, que se encuentra dentro del ciclo de vida de página del cliente, sólo tendrá que utilizar una conexión HTTP, es decir, sólo se enviará una solicitud al servidor para esta solicitud, el servidor mantendrá la conexión HTTP (no respuesta de retorno), y envía periódicamente datos al navegador.
// muestra el lado del servidor (NodeJS) 
let = expreso del require ( "Express" ); 
Let App = Express (); 

app.use (. Expreso estáticos ( "Recursos" )); 
app.get ( "/ httpstream" , la función ( REQ, RES) { 
    var x = 0 ; 
    res.setHeader ( 'Conexión', 'Transfer-Encoding' ); 
  res.setHeader ( 'Content-Type de la', 'text / html;. charset = UTF-8' ); 
  RES. setHeader ( 'Transfer-Encoding', 'fragmentada'); // declarar una codificación está fragmentada transmisión de datos, dejar que el navegador procesamiento oportuno 
    setInterval (function () { 
        res.write (los ejes X +++ "|");// cada 2s última transmisión de datos al cliente
    }, 2000 ); 
}); 

app.listen ( 3000);

  Después de que el servidor recibe la petición, el cliente cada dos segundos para dar salida a un fragmento de texto, pero no va a utilizar res.end()o res.send()poner fin a la actual solicitud HTTP.

// muestra de clientes JS 
var XHR = new new XMLHttpRequest (); 
var Recibidas = 0 ; 
var Resultado = "" ; 
xhr.open ( "GET", "/ httpstream", true ); 
xhr.onreadystatechange = function () {
   SI (. == xhr.readyState 3) { // . readyState 3 representa los datos analizada se 
    Resultado = xhr.responseText.substring (recibida); // tomado últimos datos 
    recibidos + = result.length; 
    la console.log (Resultado); 
  } 
} 
xhr.send ();
  Con recibe datos desde el servidor, el cliente readyState se hará periódicamente 3 , responseText que contiene todas las fuentes de datos. Por received longitud de los datos previamente grabados de haber sido tratado, y luego responseText llevado últimos datos.
            

  ventajas:

  A lo largo del ciclo de vida de la página, basta con crear una conexión HTTP.

  desventajas:

  • Si el cliente de acceso también, debido a la conexión con el servidor http limitado y no es capaz de dar servicio a un nuevo cliente.
  • Los datos recibidos por el flujo de clientes aumentará y eventualmente puede conducir a problemas de rendimiento de la página

  4, SSE ( Server-enviado-Events)

  SSE (Eventos enviados por el servidor) es una API para enviar datos al cliente basado en un servidor HTTP implementada. Él es un API para la realización de los citados tres métodos (de votación, a largo de votación, la transmisión HTTP) es un estándar. Uso SSE API para crear conexiones unidireccionales al servidor, el servidor puede transmitir datos a través de esta conexión. Tiene las siguientes características:

  • Desconectar el conector
  • tipo MIME de la respuesta del servidor debe sertext/event-stream
  • ¿Necesita un soporte para la API del navegador (consulte la compatibilidad del navegador )

            

  Utilice la siguiente manera:

// cliente JS 
var = Fuente nueva nueva ; El origen de eventos (URL)
 // se establece la conexión de disparo 
source.onopen = function () {
   // hacer algo aquí Papel pintado 
;}
 // evento de disparo recibe desde el servidor nuevo 
source.onmessage = function (event) { 
  var data = event.data; // devuelve el servidor los datos almacenados en la event.data 
};
 // excepción de conexión se activa 
source.onerror = function () {
   // hacer algo aquí Papel pintado 
};

  El cliente crea un objeto EventSource unido a la URL correspondiente, a continuación, detectando el evento objeto onmessage pueden obtener los datos más recientes.

// servidor端示例(nodejs) 
permiten expresas = requieren ( "expresar" ); 
permiten app = expresan (); 

app.use (expresa. estática ( "recursos" )); 
app.get ( "/ httpstream" , la función (req, res) { 
    var x = 0 ; 
  res.writeHead ( 200 , {
       "Content-Type": "text / evento-stream" ,
       "Cache-Control": "no -cache" ,
       "conexión": "keep-alive" 
    }); 
  // 每个1s往客户端发送一条数据
  setInterval (function () { 
      res.write ( "datos:" + x ++ + "\ n \ n" );
  }, 1000 ); 
}); 

app.listen ( 3000);

  5, WebSocket

  5.1 ¿Qué es la WebSocket?

  WebSocket es html5 fuera del acuerdo, http Es por eso que no lo hizo de enlace persistente, de hecho, es un nuevo protocolo WebSocket para lograr el cliente y el servidor de mensajes de texto o comunicación de datos binaria bidireccional basado; apto para tiempo real los requisitos de datos son relativamente fuertes escenas, como la mensajería instantánea, en vivo, compartir su escritorio, la necesidad de lograr un back-end separada; el cliente, no todos los navegadores soportan.

  5.2、WebSocketprotocolo de comunicación en dos partes?

  • En primer lugar, abrir HTTPlos parámetros de conexión de negociación apretón de manos, antes de intercambiar datos, el cliente debe negociar los parámetros apropiados para establecer una conexión con el servidor
  • En segundo lugar, un mecanismo de mensaje framing binario (recibido texto del mensaje y la transmisión de datos binarios). WebSocketProtocolo ofrece una serie de características de gran alcance: la comunicación basada en mensajes, una capa encuadre binaria personalizada, la negociación sub-protocolo, las extensiones de protocolo facultativo, y similares.

  5.3 ¿Qué es la actualización del protocolo HTTP?

  Es decir, implementado por primera vez por el HTTP apretón de manos, y luego actualizar el protocolo, la posterior utilización del protocolo WebSocket.

  WebSocket protocolos http y tienen un punto en común, con el servidor front-end para establecer la conexión WebSocket htt necesidad de enviar una solicitud y luego solicitan datos muestran que en el acuerdo de necesidad de actualizar a WebSocket. Capa de aplicación sec-WebSocket-clave y sec-WebSocket-aceptar WebSocket identificado con un canal único.

                      

  De la siguiente manera:

           

   Finalmente, después de que se complete el protocolo de enlace, si el apretón de manos es exitosa, la conexión se puede utilizar como un canal de comunicación bidireccional para el intercambio de WebSocketmensajes. Esto no va a volver a ocurrir entre el cliente y el servidor HTTPde comunicaciones, todo, desde el WebSocket acuerdo de adquisición.  

  5.4 Cómo actualizar acuerdo

  WebSocket se actualiza por WebSocketServerHandshaker WebSocket del lado del servidor de procesamiento de protocolo.

          

        

  La tubería es la esencia de handshaker.handshake acuerdo WebSocket códecs Agregar a la corriente y retire el códec protocolo http.

   5.5, WebSocket Entidad de Mensajes -WebSocketFrame

  mensaje WebSocket soporta múltiples entidades, puede ser utilizado en diferentes escenarios, tales como texto, flujo de datos binarios, latido del corazón y similares. , La entidad se implementa diferentes clases de mensajes implementan distintos sistemas de mensajería a continuación.

  

  5.6 ¿Qué es WebSocket niño protocolo -STOMP

  texto direccional protocolo de mensaje: TTMP protocolo predecesor STOMP es el protocolo (un simple protocolo basado en texto), diseñado específicamente para la mensajería middleware. Su sencillez le puede pasar a una definición de formato de mensaje WebSocket el cuerpo. Protocolo STOMP tiene mucho apoyo MQ.

Dos, ejercicio de combate proyecto WebSocket

  Este combate proyecto de Bowen es una sala de chat, a partir del código fuente para la universidad, dirección GitHub: https://github.com/kosamino/netty-websocket-server

   Estructura del código y funciona como se muestra a continuación:

              

  Sistema de diagrama de flujo como se muestra a continuación:

  Otro blogger adjunta resto de WebSocket combate de proyectos: proyectos de adquisición de datos de incendios de cambio de divisas Netty + WebSocket

Supongo que te gusta

Origin www.cnblogs.com/jing99/p/12571980.html
Recomendado
Clasificación