Uso de WebSocket en Android

1. Introducción

WebSocket es un protocolo para la comunicación bidireccional en tiempo real entre un navegador web y un servidor. A diferencia del modelo tradicional de solicitud-respuesta de HTTP, WebSocket permite que el servidor envíe activamente datos al cliente sin que el cliente inicie una solicitud. Por supuesto, hasta ahora, WebSocket ya no se limita a los navegadores web, sino que también se puede usar en aplicaciones móviles y aplicaciones de escritorio.

Las características principales de WebSocket incluyen:

  1. Comunicación bidireccional: WebSocket permite la comunicación bidireccional en tiempo real entre el servidor y el cliente, los mensajes se pueden enviar en cualquier lado y el otro lado puede recibirlos y procesarlos de inmediato.

  2. Conexiones persistentes: a diferencia de HTTP, las conexiones WebSocket son persistentes, una vez que se establece una conexión, permanece abierta hasta que una de las partes cierra la conexión.

  3. Baja latencia: dado que WebSocket establece una conexión persistente, evita el protocolo de enlace y la sobrecarga del encabezado en HTTP, lo que reduce la latencia del intercambio de datos.

  4. Menos volumen de transferencia de datos: WebSocket usa menos volumen de transferencia de datos porque utiliza técnicas de compresión y tramas de datos binarios para reducir el tamaño del paquete.

WebSocket se usa ampliamente en aplicaciones que requieren comunicación en tiempo real y actualizaciones instantáneas, como aplicaciones de chat en línea, herramientas de colaboración entre varias personas, monitoreo de datos y juegos en tiempo real, etc.

2. Principio

Los siguientes son los principios básicos de comunicación de WebSocket:

  1. Protocolo de enlace: la comunicación de WebSocket comienza con un proceso de protocolo de enlace HTTP. El cliente solicita establecer una conexión WebSocket enviando una solicitud HTTP al servidor. Esta solicitud contiene encabezados especiales como "Actualización: WebSocket" y "Conexión: Actualización". Después de que el servidor reciba esta solicitud, si es compatible con el protocolo WebSocket, enviará una respuesta HTTP con un código de estado de 101 (protocolo de cambio), lo que indica que acepta actualizar a la conexión WebSocket.

  2. Establecimiento de la conexión: una vez que el protocolo de enlace es exitoso, se establece la conexión WebSocket. En este punto, la conexión entre el cliente y el servidor cambia del protocolo HTTP al protocolo WebSocket. WebSocket usa una conexión persistente similar a TCP para reducir la cantidad de transmisión de datos al usar menos información de encabezado de marco y marcos de datos binarios.

  3. Comunicación bidireccional: una vez que se establece la conexión, el cliente y el servidor pueden comunicarse bidireccionalmente con una latencia muy baja. Pueden enviar mensajes en cualquier momento sin depender del modelo tradicional de solicitud y respuesta. Los clientes y servidores pueden enviar mensajes de texto o datos binarios. WebSocket utiliza marcos (Frame) para encapsular y transmitir estos mensajes.

  4. Trama de datos (Frame): La transmisión de datos de WebSocket se basa en el concepto de trama. Cada marco de datos consta de un encabezado de marco y una carga útil (Payload). El encabezado de la trama contiene algunos bits de control e información sobre la longitud de los datos. La carga útil es el contenido del mensaje. Los marcos de datos pueden ser marcos de texto (mensajes de texto codificados en UTF-8) o marcos binarios (datos binarios arbitrarios).

  5. Cerrar conexión: para cerrar una conexión WebSocket, una de las partes puede enviar un marco de cierre especial (Cerrar marco). Cuando la otra parte recibe el marco de cierre, también enviará un marco de cierre para confirmar el cierre. Este proceso permite que ambas partes cierren gradualmente la conexión para limpiar y finalizar la comunicación.

Tres, usa

Usar WebSocket en Android es muy simple, estos son los pasos:

1. Importe la biblioteca WebSocket: la biblioteca WebSocket de uso común es la biblioteca OkHttp, que proporciona compatibilidad con WebSocket

implementation 'com.squareup.okhttp3:okhttp:版本号'

2. Cree una conexión WebSocket:

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url("ws://your-websocket-url").build();

WebSocket webSocket = client.newWebSocket(request, new WebSocketListener() {
    @Override
    public void onOpen(WebSocket webSocket, Response response) {
        // 连接成功时的处理
    }

    @Override
    public void onMessage(WebSocket webSocket, String text) {
        // 接收到消息时的处理
    }

    @Override
    public void onClosing(WebSocket webSocket, int code, String reason) {
        // 关闭连接时的处理
    }

    @Override
    public void onFailure(WebSocket webSocket, Throwable t, Response response) {
        // 连接失败时的处理
    }
});

3. Enviar y recibir mensajes:

//发送消息
webSocket.send("Hello World!");

// 接收消息
@Override
public void onMessage(WebSocket webSocket, String text) {
    // 处理接收到的消息
}

4. Cierra la conexión:

webSocket.close(NORMAL_CLOSURE_STATUS, "Close");

Estos son los pasos básicos para la comunicación en tiempo real en aplicaciones Android usando WebSocket.

Supongo que te gusta

Origin blog.csdn.net/gs12software/article/details/131300245
Recomendado
Clasificación