Comprender la arquitectura y el diseño del sistema de WhatsApp

Resumen

El cifrado de extremo a extremo de WhatsApp puede no ser tan protegido por la privacidad como esperaría, a pesar de su seguridad teórica. Este artículo explora la arquitectura y el diseño del sistema de WhatsApp, arrojando luz sobre su funcionamiento interno.

Puntos clave

1. Roxdavirox/Socket-Whatsapp: Esta confirmación no pertenece a ninguna rama en este repositorio y puede ser de una bifurcación fuera del repositorio.

2. Nombre ya en uso: Crear una rama con un nombre que ya existe como etiqueta puede conducir a un comportamiento inesperado. Se le solicita al usuario que confirme la creación de la rama.

3. Lanzamiento de GitHub Desktop: Si no sucede nada, se recomienda al usuario que descargue el escritorio de Github e intente nuevamente.

4. Lanzamiento de Xcode: Si no pasa nada, se recomienda al usuario que descargue Xcode e intente nuevamente.

5. Lanzamiento del código Visual Studio: Se informa al usuario que su CodeSpace se abrirá una vez que esté listo. Si hubo un problema para preparar el espacio de código, se les alienta a intentarlo de nuevo.

6. Último compromiso: Se muestran los detalles de la última confirmación realizada en el repositorio.

7. Estadísticas de git: Se proporciona una descripción general de las estadísticas de git para el repositorio.

8. Archivos: Se muestra la información sobre los archivos en el repositorio, incluida la falta de carga de la información de confirmación más reciente.

9. Readme.Maryland: Una breve descripción de la biblioteca de Baileys, que es un nodo puro.Implementación de JS de la API web de WhatsApp sin la necesidad de selenio o cualquier otro navegador. Utiliza WebSocket directamente para interactuar con WhatsApp Web.

10. Uso de Baileys: Se dan instrucciones sobre cómo instalar Baileys de NPM e importarlo al código.

Preguntas y respuestas:

1. ¿Cuál es el propósito de la confirmación de Roxdavirox/Socket-Whatsapp??
El propósito de este confirmación no está claro, ya que no pertenece a ninguna rama en el repositorio y puede ser de una bifurcación fuera del repositorio.

2. ¿Qué posible problema puede surgir al crear una rama con un nombre que ya existe como etiqueta??
Crear una rama con un nombre que ya existe como etiqueta puede causar un comportamiento inesperado. Es recomendable confirmar antes de crear dicha rama.

3. ¿Qué se debe hacer si no pasa nada al lanzar GitHub Desktop??
Si no sucede nada al lanzar GitHub Desktop, se recomienda descargarlo e intentarlo de nuevo.

4. ¿Qué se debe hacer si no pasa nada al lanzar Xcode??
Si no sucede nada al lanzar Xcode, se sugiere descargar e intentarlo nuevamente.

5. ¿Qué medidas se deben tomar si hay un problema para preparar el CodeSpace al lanzar el código de Visual Studio??
Si hay un problema que prepara el CodeSpace al iniciar el código Visual Studio, es mejor intentarlo nuevamente.

6. ¿Qué información proporciona la sección “Última confirmación”??
La sección “Última confirmación” muestra detalles de la confirmación más reciente realizada con el repositorio.

7. ¿Qué muestra la sección de “estadísticas git”??
La sección “Git Stats” proporciona una visión general de las estadísticas de GIT para el repositorio.

8. ¿Qué información se presenta en la sección “Archivos”??
La sección “Archivos” muestra información sobre los archivos en el repositorio, incluidas las fallas en cargar la información de confirmación más reciente.

9. ¿Qué es Baileys??
Baileys es un nodo puro.Implementación de JS de la API web de WhatsApp. Permite la comunicación directa con WhatsApp Web utilizando un WebSocket, sin la necesidad de un navegador como Selenium.

10. ¿Cómo se pueden instalar e importar los Baileys??
Baileys se puede instalar desde NPM utilizando el comando “NPM Instale GitHub: Adiwajshing/Baileys.”Luego se puede importar al código utilizando” const whatsappweb = request (‘Baileys’).”

Experiencia personal y recomendaciones:

En mi experiencia personal, comprender la arquitectura y el diseño del sistema de WhatsApp han sido cruciales en el desarrollo de aplicaciones que se integran con la plataforma. Baileys, siendo un nodo puro.Implementación JS, ha hecho que sea mucho más fácil interactuar con WhatsApp Web sin la necesidad de herramientas de automatización de navegadores como Selenium. Recomiendo encarecidamente aprovechar tales bibliotecas para cualquier persona que busque construir aplicaciones además de la infraestructura de WhatsApp.

Comprensión de la arquitectura y diseño del sistema de WhatsApp

Mientras que el cifrado de extremo a extremo puede hacerte sentir seguro en teoría. En la práctica, el cifrado de extremo a extremo es’t tan protegiendo la privacidad como uno esperaría.

Roxdavirox/Socket-Whatsapp

Esta confirmación no pertenece a ninguna rama en este repositorio, y puede pertenecer a una bifurcación fuera del repositorio.

Cambiar ramas/etiquetas

Etiquetas de ramas

No pudo cargar ramas

Nada que mostrar

No se pudo cargar etiquetas

Nada que mostrar

Nombre ya en uso

Ya existe una etiqueta con el nombre de rama proporcionado. Muchos comandos GIT aceptan los nombres de etiquetas y ramas, por lo que crear esta rama puede causar un comportamiento inesperado. ¿Estás seguro de que quieres crear esta rama??

Cancelar crear

  • Local
  • Espacios de códigos

Https github cli

Use git o consulte con SVN utilizando la URL web.

Trabaja rápido con nuestra CLI oficial. Aprenda más sobre el CLI.

Inicio de sesión requerido

Inicie sesión para usar CodeSpaces.

Lanzamiento de Github Desktop

Si no pasa nada, descargue el escritorio de Github y vuelva a intentarlo.

Lanzamiento de Github Desktop

Si no pasa nada, descargue el escritorio de Github y vuelva a intentarlo.

Lanzamiento de Xcode

Si no pasa nada, descargue Xcode e intente nuevamente.

Lanzamiento del código Visual Studio

Tu CodeSpace se abrirá una vez que esté listo.

Hubo un problema para preparar su espacio de código, intente nuevamente.

Último cometer

Estadísticas de git

Archivos

No se pudo cargar información de confirmación más reciente.

Último mensaje de confirmación

Tiempo de compromiso

Readme.Maryland

API web de WhatsApp de ingeniería inversa en nodo puro.js. Baileys no requiere que Selenium ni ningún otro navegador sean interfaz con WhatsApp Web, lo hace directamente usando un WebSocket.

Gracias a Sigalor por escribir la Guía de Ingeniería Inversa WhatsApp Web y gracias a los Rymen por el ir reimplementación.

Baileys es súper fácil de usar:

  • Instalar desde NPM usando NPM Instalar GitHub: Adiwajshing/Baileys
  • Luego importe en su código usando

estúpido Whatsappweb = requerir('Baileys') 

dejar cliente = nuevo Whatsappweb() cliente.conectar()

cliente.manejadores.innetrado = () =>  / * Cuando se autentica con éxito con los servidores web de WhatsApp */ > 

cliente.manejadores.OnunreadMessage = (mensaje) =>  / * llamado cuando tiene un mensaje pendiente no leído o reciba un nuevo mensaje */ > 

cliente.manejadores.onderror = (error) =>  / * llamado cuando hubo un error */ > 

cliente.manejadores.presenciado = (identificación, presencia) =>  / * Llamado cuando recibe una actualización sobre la presencia de alguien */ > 

cliente.manejadores.endisconnect = () =>  / * Llamado cuando Internet se desconecta */ > 

cliente.manejadores.OnunreadMessage = (metro) =>  estúpido Tipo de mensaje = cliente.getMessageType(metro.mensaje) // Obtener qué tipo de mensaje es: texto, imagen, video >

cliente.manejadores.OnunreadMessage = (metro) =>  estúpido Tipo de mensaje = cliente.getMessageType(metro.mensaje) // Obtener qué tipo de mensaje es: texto, imagen, video // Si el mensaje no es un mensaje de texto si (Tipo de mensaje !== Whatsappweb.Tipo de mensaje.texto && Tipo de mensaje !== Whatsappweb.Tipo de mensaje.ExtendedText)  cliente.decodemediaessage(metro.mensaje, "Nombre del archivo") // Extensión aplicada automáticamente .entonces (meta => consola.registro(metro.llave.remoto + "enviados medios, guardados en:" + meta.Nombre del archivo)) .atrapar (errar => consola.registro("Error en el mensaje de decodificación:" + errar)) > >

cliente.envía un mensaje de texto(identificación, txtmessage) 

O si desea citar otro mensaje:

cliente.envía un mensaje de texto(identificación, txtmessage, cita) 

cliente.EnviarmediaSage(identificación, MediaBuffer, tipo de medio, información)

  • La miniatura se puede generar automáticamente para imágenes y pegatinas.
  • MediaBuffer es solo un búfer que contiene el contenido de los medios que desea enviar
  • Mediatype representa el tipo de mensaje que está enviando. Este puede ser uno de los siguientes:

[ Whatsappweb.Tipo de mensaje.imagen, // un mensaje de imagen Whatsappweb.Tipo de mensaje.video, // un mensaje de video Whatsappweb.Tipo de mensaje.audio, // Un mensaje de audio Whatsappweb.Tipo de mensaje.pegatina // un mensaje de pegatina ]

información =  subtítulo: "hola!", // El título para enviar con los medios (aunque no se puede enviar con pegatinas) miniatura: nulo, /* Tiene que ser un JPEG codificado de base 64 si desea enviar un pulgar personalizado, o establecer en nulo si no desea enviar una miniatura. No ingrese a este campo si desea generar automáticamente un pulgar */ tipo de Mimica: "Solicitud PDF", /* Especifique el tipo de medios (opcional para todos los tipos de medios, excepto los documentos), Para archivos PDF => Establecer en "Aplicación/PDF", Para archivos txt => Establecer en "Aplicación/TXT" etc. */ gif: verdadero // Solo aplicable a los mensajes de video, si el video se trata como un GIF >

cliente.sendreadReceipt(identificación, MessageDid) 

cliente.UpdatePresence(identificación, presencia) 

Esto le permite a la persona con identificación su estado. donde la presencia puede ser uno de los siguientes:

estático Presencia =  disponible: "disponible", // "en línea" indisponible: "indisponible", // fuera de línea composición: "composición", // "mecanografía. " grabación: "grabación", // "Grabación. " detenido: "Pause" // No tengo ni idea >

estúpido authjson = cliente.base64CodeDauthinfo() 

estúpido authjson = Json.analizar gramaticalmente( FS.readfilesync("Auth_info.JSON ") ) cliente.acceso(authjson)

cliente.isonwhatsapp ("[CountryCode] [Some10DigitNumber] @S.whatsapp.neto") .entonces ((existe, identificación) =>  si (existe)  consola.registro(identificación + "está en whatsapp") > demás  consola.registro(identificación + "No está en WhatsApp :(") > >)

Ejemplo de consulte y ejecute.JS para ver el uso de ejemplo de todas estas funciones. Para ejecutar el script de ejemplo, descargar o clonar el repositorio y luego escribir lo siguiente en la terminal:

  1. ruta de CD/a/Baileys/Ejemplo
  2. ejemplo de nodo.js

De ninguna manera estoy afiliado a WhatsApp. Esto fue escrito con fines educativos. Use a su propia discreción.

Comprender la arquitectura y el diseño del sistema de WhatsApp

¿Alguna vez te has preguntado cómo funciona WhatsApp?? Nosotros’He estudiado el diseño y la arquitectura del sistema de alto nivel de WhatsApp’S Tecnología. Sumergirse para ver lo que aprendimos.

Etiqueta de tipo de contenido

Tabla de contenido

¿Qué aplicación tiene más de 2?.5 mil millones de usuarios activos, más de 5 mil millones de descargas, y es la aplicación más popular en más de 100 países?

Sugerencia: consulte el título del artículo.

Si, eso’s correcto. WhatsApp es el servicio de mensajería más popular del mundo. Según Mark Zuckerberg, se envían más de 100 mil millones de mensajes a través de WhatsApp todos los días.

Con un tráfico casi casi astronómico, uno puede’T Helk Pero preguntarme cómo funciona WhatsApp: diseño de su sistema, arquitectura del servidor, tecnología . ¿Cómo maneja tantos usuarios y mensajes concurrentes?? ¿Qué tipo de marcos y lenguajes de programación permiten ese tipo de escala?? ¿Cómo mantienen todos esos datos seguros?? Muchas preguntas!

En este artículo, vamos a sumergirnos profundamente en WhatsApp’S Arquitectura y diseño de sistemas. Nosotros’Responder a todas las preguntas mencionadas anteriormente y más.
Si usted’Alguna vez me he preguntado sobre el mejor perro del mundo de la aplicación de chat, sigue leyendo.

Descargo de responsabilidad: Realizamos Internet para recopilar todos los recursos sobre el diseño de la arquitectura de WhatsApp y lo hemos compilado y resumido aquí. Hasta donde sabemos, esta información es precisa. Sin embargo, a medida que las empresas actualizan su pila tecnológica con frecuencia, esta información está sujeta a cambios.

Pila de tecnología front-end de WhatsApp

Dejar’s Comience con el frontend y avance hacia el hardware en el backend.

La primera parte del diseño del sistema WhatsApp que interactúa un usuario es la aplicación móvil o web. WhatsApp admite casi todas las plataformas. Tiene una aplicación iOS, aplicación Android, aplicación de escritorio, aplicación web y aplicación de Windows Phone. Hasta 2017, incluso podrías usar WhatsApp en un BlackBerry.

Con tantas plataformas compatibles, es posible que haya adivinado que WhatsApp sería una aplicación híbrida. Pero, de hecho,’s no. En realidad construyeron una aplicación nativa para cada plataforma. Aquí hay una lista de todas las plataformas compatibles con los idiomas front-end que se usaron para construir cada una:

Cómo las tiendas de Whatsapp chatan localmente

Además del lenguaje de programación en sí, otra tecnología importante que WhatsApp usa en la frontend es una base de datos SQLite. SQLite es una base de datos independiente, autónoma y relacional que está destinada a estar integrada en aplicaciones, lo que significa que vive en su dispositivo. WhatsApp lo usa para almacenar conversaciones. Dado que sería una pérdida de recursos descargar todos los mensajes de la nube cada vez que abre la aplicación, WhatsApp elige almacenar los mensajes localmente. De hecho, WhatsApp solo almacena mensajes hasta que se reciban en cuyo punto son eliminados.

¿Qué protocolos de mensajería usa whatsapp??

WhatsApp utiliza una versión altamente modificada de XMPP en un servidor Ejabberd (más sobre eso más adelante) para comunicarse con los clientes.

El XMPP en el cliente abre un enchufe SSL a los servidores de WhatsApp. Todos los mensajes enviados se ponen en cola en los servidores hasta que el cliente se abra o se vuelva a conectar a este socket para recuperar los mensajes. Una vez que el cliente recupera correctamente un mensaje, se envía un estado de éxito al servidor de WhatsApp. El servidor luego reenvía este estado al remitente original; hacerles saber que el mensaje se recibió agregando el “marca de verificación” icono al lado del mensaje enviado correctamente.

Tenga en cuenta que, si bien XMPP es uno de los protocolos de mensajería más populares para las aplicaciones de chat, definitivamente no es la única opción para elegir un protocolo de mensajería.

Tecnología de cifrado de WhatsApp

WhatsApp utiliza cifrado de extremo a extremo. Idealmente, esto significa que solo el remitente original y el verdadero destinatario del mensaje pueden leer el mensaje en texto sin formato.

Cuando envía un mensaje, se cifra usando un protocolo de cifrado específico (más sobre el siguiente). WhatsApp almacena este mensaje cifrado en sus servidores hasta que’s entregado al destinatario. Tras la entrega, el dispositivo del destinatario descifra el mensaje nuevamente en un mensaje legible y sin formato utilizando una clave criptográfica única. En todo este proceso, WhatsApp nunca conoce el contenido de su mensaje.

Whatsapp’La tecnología de cifrado S se llama Protocolo de cifrado de señal, que fue desarrollado por Open System Whispers para ser un protocolo moderno, de código abierto y fuerte para los sistemas de mensajería asíncrona.

Mientras que el cifrado de extremo a extremo puede hacerte sentir seguro en teoría. En la práctica, el cifrado de extremo a extremo es’t tan protegiendo la privacidad como uno esperaría.

Pila de tecnología de back-end whatsapp

Dejar’S pasa al backend.

Hasta donde sabemos, el diseño actual del sistema de back-end de WhatsApp se ve así:

  • Erlang es el lenguaje de programación principal
  • FreeBSD es el sistema operativo
  • Eyabberd es el servidor de aplicaciones XMPP
  • HAZ es la máquina virtual basada en Erlang
  • Mnesia es su base de datos basada en Erlang
  • Yaws es su servidor web multimedia

Dejar’s Explore algunos de los aspectos más interesantes de WhatsApp’S Arquitectura de back-end:

Erlang

La elección de WhatsApp de lenguaje de programación es en gran parte lo que le permite funcionar a escala tan colosal.

Erlang es un lenguaje de programación funcional que está orientado a la construcción de sistemas concurrentes, escalables y confiables. Utiliza un modelo basado en procesos llamado “modelo de actor” en el que los procesos pequeños y aislados se comunican entre sí a través de mensajes. Estos procesos pueden crear nuevos procesos, enviar mensajes y modificar su estado en respuesta a la recepción de mensajes.

Su propiedad basada en procesos le da a Erlang su concurrencia, escalabilidad y confiabilidad extremadamente alta.

Estos procesos también pueden comunicarse con procesos fuera del núcleo en el que se ejecuta. Esto facilita la escala del sistema horizontalmente (agregando más máquinas) o verticalmente (agregando más núcleos). Por último, dado que los procesos pueden comunicarse entre sí y, lo que es más importante, reiniciarse entre sí,’es fácil de construir sistemas de autocuración. Si un error bloquea un proceso, otro proceso puede reiniciarlo.

FreeBSD

Una opción técnica interesante de los fundadores de Whatsapp fue elegir FreeBSD como un sistema operativo en lugar de un sistema más utilizado (como Linux).

Brian Acton, uno de los cofundadores de WhatsApp, dijo esto en una entrevista con Wired sobre la decisión:

“Linux es una bestia de complejidad. FreeBSD tiene la ventaja de ser una distribución única con una colección de puertos extraordinariamente buena.”

Además, cuando se trata de un rendimiento bruto, especialmente en lo que respecta a la carga del sistema por paquete, ningún otro sistema operativo puede vencer a FreeBSD.

Sin embargo, cuando se trata de eso, la verdadera razón por la que decidieron usar FreeBSD es probablemente porque ambos cofundadores tenían una larga historia de trabajar con él en Yahoo!.

Eyabberd

Ejabberd es un servidor XMPP de código abierto que está escrito en Erlang. WhatsApp utiliza una versión modificada de XMPP como protocolo para manejar la entrega de mensajes. Incluso el servidor EJABBERD que usa WhatsApp está muy personalizado para optimizar el rendimiento del servidor.

Qué’s El propósito de Ejabberd?

Bueno, maneja el enrutamiento de mensajes, la capacidad de entrega y los aspectos generales de mensajería instantánea de la aplicación. Las características de Ejabberd incluyen:

  • Mensajes uno a uno
  • Grupo de chat
  • Almacenar y reenviar mensajes fuera de línea
  • Lista de contactos y presencia

Mnesia

Para almacenar datos y mensajes temporales, WhatsApp utiliza un DBMS distribuido (Sistema de gestión de bases de datos) basado en Erlang llamado Mnesia. Este DBMS proporciona beneficios que no se dedican muchas bases de datos tradicionales’t como:

  • Búsqueda de clave/valor en tiempo real
  • Tolerancia de fallas altas
  • Reconfiguración dinámica
  • Objetos complejos

Mnesia también es el único DBMS que’s escrito en Erlang. Esto en sí mismo es un beneficio porque no hay diferencias de estructura de datos entre Erlang en la aplicación y Erlang en el DBMS. La codificación es, por lo tanto, más rápida y más explícita.

HAZ

Haz, corto para “Bogdan’S Erlang Máquina abstracta”, es una máquina virtual que compila y ejecuta el código fuente de Erlang. El haz está diseñado específicamente para aplicaciones altamente concurrentes, perfecta para whatsapp’S Caso de uso. HAZ’S Secret Sauce son procesos livianos que no’t Compartir memoria y son administrados por los programadores. Estos programadores pueden administrar millones de procesos en múltiples núcleos. Esto hace que el haz sea altamente escalable y resistente a las fallas, como las causadas por altas cargas de tráfico, actualizaciones del sistema y interrupciones de la red.

Beam es tan crucial para el diseño del sistema WhatsApp que el equipo de WhatsApp ha publicado muchos parches y correcciones al código fuente central.

PIAN

Yaws (otro servidor web) es un servidor web basado en Erlang que es ideal para contenido dinámico. WhatsApp utiliza guiils para almacenar datos multimedia. Yaws en sí utiliza websockets HTML5 que simplifican la comunicación bidireccional al establecer una conexión confiable y rápida entre el servidor y la aplicación. Mediante el uso de esta tecnología, WhatsApp puede enviar y recibir datos multimedia a través de miles de millones de dispositivos, en tiempo real.

Componentes de hardware de WhatsApp

En 2017, cuatro años después de ser adquirido por Facebook, WhatsApp fue retirado de IBM Softlayer’s nube y traído a Facebook’s centros de datos propietarios.

Lo que sí sabemos es que en 2014 WhatsApp requirió alrededor de 550 servidores y más de 11,000 núcleos que corrieron Erlang. También sabemos que whatsapp’La base de usuarios S fue “solo” alrededor de medio mil millones en 2014 en comparación con los más de 2 mil millones de usuarios que alcanzó en 2020. Entonces, con esos datos en mente, te permitiremos imaginar cuántos servidores y núcleos requiere ahora WhatsApp. Imaginamos que es mucho.

Diagrama de arquitectura de WhatsApp

Diagrama de arquitectura de WhatsApp

La forma más fácil de comprender plena a WhatsApp’El diseño de la arquitectura S es, por supuesto, a través de un diagrama de arquitectura de WhatsApp.

A partir del lado izquierdo tenemos múltiples clientes diferentes (aplicaciones móviles y web), cada uno de los cuales aloja una base de datos SQLite local para almacenar conversaciones.

Los clientes usan WebSockets HTTP para enviar y recuperar datos multimedia, como imágenes y videos desde el servidor web de guiils. Pero, como puede ver, XMPP se usa para enviar esos archivos y otros mensajes a otros usuarios.

Cuando se envía un mensaje XMPP, pasa por la serie de pasos representados anteriormente. Primero, se envía a WhatsApp’S Servidor Ejabberd personalizado que se ejecuta en Beam y FreeBSD. El servidor Ejabberd guarda el mensaje en una tabla de base de datos de Mnesia donde se pone en una cola. Cuando el usuario receptor abre la aplicación, reconectando así al socket, el mensaje en la cola se enruta a través del servidor Ejabberd y se entrega al destinatario. Una vez que se puede confirmar la entrega exitosa, el mensaje se elimina de la base de datos de Mnesia.

Conclusión

Mientras no’T Know las especificaciones exactas de WhatsApp’S Arquitectura técnica y diseño del sistema, podemos tener una buena idea basada en las tecnologías que emplea WhatsApp. Esperamos que este artículo, explorando el diseño de la arquitectura de WhatsApp, haya respondido a sus preguntas candentes. Ahora que ha obtenido una comprensión de cómo funciona el servidor WhatsApp, aprendió cómo se ve la pila de tecnología de WhatsApp e incluso escaneó un diagrama de arquitectura de WhatsApp. Tal vez te sientas facultado para asumir un proyecto de aplicación de chat propio.

Si usted’Reade Ready para darle una carrera a WhatsApp por su dinero, regístrese en nuestro tablero de desarrolladores y comience a construir su aplicación de chat de forma gratuita.

Pero tenga en cuenta que muchas de las tecnologías en la pila de tecnología de WhatsApp fueron elegidas específicamente por su capacidad de escalar y manejar una concurrencia extremadamente alta.

Si usted’tratando de construir una aplicación de citas o telemedicina (o cualquier cosa que no’Necesita casi el mundo entero para estar en línea al mismo tiempo), es posible que no necesite la cantidad de escala que hace WhatsApp.

En otras palabras, la pila tecnológica de whatsapp, aunque perfecta para whatsapp, puede no ser la mejor solución para usted. Para conocer la arquitectura ideal y la pila tecnológica para una aplicación de chat, diríjase a este artículo.

Si todavía tiene preguntas sobre lo que es adecuado para usted, no dude en hablar con nuestros expertos y antes de comenzar a construir su propia aplicación de chat.

Solo hambriento por más? Aquí hay algunos recursos más excelentes para sumergirse en:

  • El mito del cifrado de extremo a extremo en las aplicaciones de mensajería
  • Comprender la arquitectura y el diseño del sistema de una aplicación de chat
  • 11 Los desarrolladores de error tonto cometen al construir una aplicación de chat

Sobre el Autor

Cosette Cressler es una apasionada comercialización de contenido especializado en SaaS, tecnología, carreras, productividad, emprendimiento y autodesarrollo. Ella ayuda a hacer crecer empresas de todos los tamaños creando contenido consistente y digerible que capture la atención e impulsa la acción.

¿WhatsApp usa socket?

О ээ й с

Ы зарегисрировали подозрите». С поеenoщ этой сраницы ы ы смеееomin. Почеéfir?

Эта сраница отображае regalo в тех слааkeх, когда ав regalo ко regalo. Сраницigur. До этого мента длebre исползованиís слжлoncor google необходияl.

Источникое запросов мет слить вредоно lugar ылку запросiante. Если represente. Обрати regalo. Подробнее.

Проверка по capa мubl же regalo еéfire, иле водите запросы чень часто.

XMPP vs WebSocket: que se debe usar para aplicaciones?

XMPP vs WebSocket: ¿qué usar para aplicaciones?

Si bien su objetivo es construir una aplicación de mensajería instantánea (IM) altamente rica en características desde cero, la parte más preocupante es: descubrir el protocolo óptimo para la mensajería. Las opciones ofrecidas (las dos) se explican en unos minutos.

Para decirlo claramente, hemos tratado de aportar un conocimiento sustancial sobre el protocolo XMPP vs WebSocket a través de esta publicación para usted. Conocidos por sus distintas características e instalaciones, estos dos protocolos IM pueden allanar el camino para mejorar la comunicación instantánea a medida que avanzamos en el tiempo. De todos modos, eso’no es fácil de elegir, ya que uno es fácil tiene ventajas y limitaciones distintas.

Objetivos de aprendizaje

Suscríbete para las últimas noticias

Mukhaddin Beshkov

Experto verificado

Más de 20 años de experiencia en TI en ingeniería de sistemas, análisis de seguridad, arquitectura de soluciones. Competente en OS (Windows, Linux, Unix), Programación (C ++, Python, HTML/CSS/JS, Bash), DB (MySQL, Oracle, MongoDB, Postgresql). Disputado en secuencias de comandos (PowerShell, Python), DevOps (microservicios, contenedores, CI/CD), desarrollo web (nodo.js, reaccionar, angular). Historial exitoso en la gestión de sistemas de TI.

Definición

XMPP – Todo sobre el protocolo

Utilizado para el intercambio de fragmentos XML B/W El dúo del servidor-cliente, XMPP es uno de los primeros protocolos estándares sobre la comunicación. Tiene una larga historia de más de 20 años. Su implementación efectiva exige el uso obligatorio de la unión de transporte adecuada.

En el modelo OSI, XMPP funciona principalmente en la capa de aplicación que elabora el patrón estructural XML (de sus piezas o sintaxis). Para la transmisión/transmisión, necesita capas de transporte’ protocolos’ (Http o tcp) ayuda.

miXtensible METROESSAGIN Y PAGresidencia PAGEl rotocol, en su mayoría, se utiliza en desarrollos que involucran aplicaciones de chat, aplicaciones con instalaciones como llamadas de voz/video, envío instantáneo de mensajes de texto/redes ricas y videollamadas de varias partes.

Comunicación directa del cliente-cliente

Pros

Con XMPP, tiene múltiples beneficios que disfrutar mientras desarrolla una aplicación IM. Por ejemplo:

  • Sus características de ciberseguridad son lo suficientemente avanzadas como para mantener a raya los principales peligros del mundo digital.
  • La arquitectura descentralizada asegura que sea accesible para todos.
  • El soporte técnico ofrecido es confiable y efectivo.
  • Es flexible y permite que los usuarios finales realicen cambios en el proceso de transmisión de datos según la necesidad del proyecto.
  • Ayuda a establecer una conexión persistente (continua).
  • Simplifica los servidores de comunicación b/w al permitir diversas arquitecturas transmitir datos.
  • Reacciona inmediatamente hacia la presencia del usuario final. De ahí tu’Podrá averiguar si el usuario final está en línea o fuera de línea.

Contras

Incluso si XMPP ofrece múltiples beneficios, no es perfecto. Hay ciertos inconvenientes o contras obvios de este protocolo.

  • Carece de un mecanismo de QoS
  • La transmisión o comunicación XML basada en texto aumenta los gastos generales
  • El transporte de contenido a menudo tiene lugar sin ninguna sincronización
  • A veces, los mensajes de presencia y/o instantáneos pueden causar sobrecarga del servidor

WebSocket: todo sobre el protocolo

Él’S un protocolo IM de la era moderna, permitiendo datos binarios y de texto’s Flujo de to-y-fl para servidor-cliente en cualquier canal persistente.

Él’s bidireccional, full-dúplex y de naturaleza con estado. Él’S se utiliza principalmente para una aplicación móvil que necesita una conexión continua. No tiene nada que ver con definir la naturaleza y el tipo de datos en tránsito. Necesita el soporte de otros protocolos para implementar completamente la capacidad de IM en la aplicación de chat.

Pros

WebSocket está diseñado para llenar el vacío que la tecnología basada en HTTP creó en la transmisión de datos. Con el tiempo, se observó que era más que esto. Eche un vistazo a los beneficios clave para disfrutar con WebSockets.

  • Mantiene la comunicación a menos que el servidor o el cliente lo detengan
  • Casi no hay coincidencia para WebSocket cuando se trata de velocidad. Puede transmitir datos más rápido que AJAX y HTTP
  • Puede hacer posible la transmisión de datos entre los servidores de origen
  • Es compatible con múltiples tipos de plataformas como móvil, web y escritorio
  • El uso de WebSockets es rentable, ya que solo ejerce gastos de 2 bytes
  • Soluciona efectivamente el largo problema de encuestas

Contras

A pesar de los beneficios, WebSocket tiene algunos inconvenientes potenciales que vale la pena señalar. Por ejemplo:

  • Solo funciona cuando tienes un navegador compatible con HTML 5
  • Carece de mecanismo de éxito similar a AJAX
  • No es posible el intermediario ni el borde en el almacenamiento en caché
  • Cuando WebSocket está en acción, los desarrolladores tendrán dificultades para implementar incluso los estados HTTP más simples

Comparación de protocolos

Después de tener una comprensión más profunda del significado básico de estos dos protocolos,’s tiempo para pasar a una comparación detallada de WebSocket XMPP V/S. Etiquetamos algunos aspectos más preocupantes y luego comparamos las ofrendas de estos dos.

Una breve evaluación de seguridad de estos dos protocolos es crucial ya que el uso de un protocolo no garantizado pondrá en riesgo todo. XMPP es un protocolo sazonado por el tiempo y ha pasado por múltiples cambios y mejoras durante estos años de activación. A medida que cambian los requisitos de seguridad, el protocolo mejora su frente de seguridad. Viene con varias capas y características de seguridad.

Cuando se activa XMPP, la identidad personal es obligatoria. Tanto los mensajes como los anfitriones deben autenticarse antes de ser parte de la comunicación para evitar falsificar el riesgo. Aunque fue suficiente para mantener las amenazas de spam bajo control,

XMPP incluso permite a los usuarios finales agregar capas de seguridad según la necesidad de la hora.

Cuando se trata de cifrado, XMPP ofrece dos tipos. El primer cifrado surge cuando se establece una conexión y comienza su autenticación. Este cifrado se completa con SASL. Una vez que la conexión se construye correctamente, la comunicación cliente-servidor está respaldada por el cifrado TLS.

Si WebSocket’La oferta de seguridad S se examina cuidadosamente, podrá aprender que necesita un poco de mejora. Él’S es un protocolo muy joven y requiere más mejoras y actualizaciones para que coincidan con lo que XMPP está ofreciendo. Pero, no’T significa que carece de seguridad. Ofrece el cifrado lo suficientemente fuerte como para mantener a raya cualquier intrusión maliciosa.

La arquitectura operativa central de XMPP está descentralizada, mientras que WebSockets sigue una arquitectura centralizada. XMPP se basa en el modelo cliente-servidor y evita la interacción directa entre los clientes. WebSockets toma la ayuda de API y asegura que el cliente y el servidor se comuniquen continuamente.

  1. Compatibilidad con otros protocolos

XMPP es un protocolo primitivo y carece de compatibilidad API. Por otro lado, WebSocket es altamente optimizado de API, que es el núcleo de una mejor compatibilidad con otros protocolos.

  1. Enviar y recibir datos binarios

En WebSockets, la comunicación implica el uso de códigos y mensajes, estableciendo a los usuarios libres de los problemas de los problemas de análisis y almacenamiento en búfer. Esto hace que la transferencia de datos sea rápida. XMPP sigue una ruta muy delgada para la transferencia de datos binarios, lo que hace que todo sea engorroso.

WebSocket se ocupa de la capa de transporte’S Extensibilidad, mientras que a XMPP se preocupa por la capa de aplicación’S Extensibilidad. Él’es posible agregar más de 40 protocolos sobre WebSockets. Pero, xmpp es’t que flexible.

A pesar de que ambos son útiles para transmitir datos en tiempo real a una velocidad de aroma, WebSocket supera a XMPP en este frente debido a su naturaleza centralizada y comunicación continua. Autenticación y autorización de la fuerza XMPP tanto del servidor como del cliente ralentiza un poco su rendimiento.

Comparación de protocolos

Ejemplos de uso de XMPP y WebSocket

XMPP se usa en aplicaciones de WhatsApp, Gtalk y Grindr e incorporado en las características de chat. Para ser específico, el protocolo se prefiere principalmente donde la comunicación segura o grupal es la característica principal de la aplicación.

Trello, Slack y Discord son las tres aplicaciones más famosas construidas con WebSockets. Como sabemos, estas aplicaciones son para equipos y trabajadores remotos. Para concluir, el protocolo es más útil para espacios de trabajo virtuales confinados, ya que utiliza una conexión continua.

Conclusión: qué protocolo usar?

WebSocket y XMPP: ambos están diseñados para mensajes instantáneos. Sin embargo, cuál debe elegir es una pregunta que debe responderse después de tomar los requisitos del proyecto en contexto. En cuanto a nuestra comprensión, recomendamos usar WebSockets cuando se deben transferir muchos datos, y la comunicación debe permanecer abierta.

XMPP es la mejor opción para hacer cuando el desarrollo requiere toneladas de complementos y la seguridad debe ser de primera categoría. Entonces, antes de elegir entre estos dos, debe averiguar cuáles son exactamente sus objetivos de desarrollo. Resuelva de antemano y luego elija un protocolo en consecuencia. Sin embargo, una cosa es segura de que ambos se entregarán al rendimiento de la par si se usan correctamente.

Preguntas más frecuentes

¿Para qué se usa XMPP??

XMPP (Protocolo de mensajería y presencia extensible) se usa para la comunicación en tiempo real, como mensajería instantánea, chat de voz y video, e información de presencia.

¿Para qué es bueno WebSocket??

WebSocket es bueno para aplicaciones web en tiempo real, como juegos en línea, aplicaciones de chat y plataformas de comercio financiero.

¿Se puede usar XMPP con WebSocket??

Sí, XMPP se puede usar con WebSocket para mejorar las aplicaciones de comunicación en tiempo real.

¿Cuáles son las ventajas de WebSocket sobre XMPP??

WebSocket tiene una latencia más baja, un mejor rendimiento y puede ser más fácil de implementar que XMPP.

¿Se puede utilizar WebSocket para la transferencia de archivos??

Según la especificación oficial, WebSocket no está diseñado para la transferencia de archivos. Sin embargo, algunos desarrolladores han encontrado formas de usar WebSocket para la transferencia de archivos. Repositorio de Github