Atención, esta respuesta es principalmente especulativa basada en mi análisis en la web misma.
No estoy relacionado con WhatsApp de ninguna manera. Entonces, si existe otra respuesta de personas que se relacionan directamente con WhatsApp, favor de votar en su lugar. De lo contrario, si solo desea leer mi análisis, puede continuar.
Introducción
Estaba esperando que WhatsApp lanzara su versión de escritorio durante años. Hoy se lanzó como versión web y (en este momento) solo se puede acceder a través del navegador Google Chrome. La primera pregunta que surgirá es, ¿por qué tardó tanto en lanzarse la versión web?
Cuando usé WhatsApp por primera vez, noté que WhatsApp posiblemente no guardó ninguno de nuestros mensajes de chat en su servidor. Simplemente envían el mensaje directamente del remitente al receptor. Se puede inferir de la forma en que el usuario necesita hacer una copia de seguridad de su historial de chat cuando quiere cambiar de teléfono. Hay varios beneficios que WhatsApp puede obtener usando este método:
- Cómo determinar si la mejor plataforma para su inicio es un sitio web o una aplicación
- ¿En qué situación desarrollaría una aplicación móvil antes que una aplicación web?
- ¿Cuáles son sus principales aplicaciones de noticias móviles en estos días?
- ¿Qué tecnologías se utilizan para configurar el backend de una aplicación móvil?
- ¿Existe una aplicación web para Instagram que le permita ver todo su historial de comentarios?
- WhatsApp no retuvo el historial de chat del usuario, de esa manera WhatsApp puede reducir el costo del servidor
- WhatsApp no tiene que preocuparse por la sincronización del historial de chat. Porque solo puede haber un cliente de WhatsApp por usuario, uno a la vez que (supuestamente) almacene su propio historial de chat. No es necesario sincronizar entre dispositivos. ¡Hurra!
- La arquitectura del sistema será bastante simple y es algo bueno porque son un equipo pequeño.
Debido a estas razones, también podemos deducir por qué WhatsApp no lanzó su versión web antes.
- Puede considerarse sin importancia (en ese momento). WhatsApp es una startup pequeña, lo mejor es que las startups se centren en una gran característica importante que muchas características a la vez. Es por eso que ganar más usuarios (obtener los usuarios de teléfonos inteligentes tanto como sea posible) se considera más importante que el proyecto desviado en el desarrollo de la versión web.
- WhatsApp simplemente no tenía los historiales de chat del usuario. ¿Cómo pueden desarrollar la versión web cuando no hay datos para mostrar? El sistema debe tener acceso al teléfono del usuario y sincronizar los historiales de chat. Era complicado y tal vez no era compatible con la batería. Tal vez fue demasiado esfuerzo y costo en ese momento desarrollar esta característica.
Pero ahora, ¡desarrollaron la versión web! ¡Terminemos esta introducción y echemos un vistazo a la aplicación web!
Cómo funciona
Hay varias cosas que notamos, pero analicemos una por una.
Autenticación
Desde el primer momento que uso WhatsApp, noté que … ¡No hay un sistema de autenticación ! De acuerdo, no fue cero en absoluto, pero no ves tus cosas habituales de nombre de usuario y contraseña. Puede ser una buena cosa, es menos complicado iniciar sesión. WhatsApp vincula la cuenta de usuario con el número de teléfono que está utilizando. Un número de teléfono por usuario. El número de teléfono en sí es el identificador único. ¿Qué tal la contraseña? No es necesario, porque estará afiliado físicamente con el número de teléfono. Si el sms te llega, entonces debes ser el usuario, así de simple.
Entonces, ¿cómo protege WhatsApp la comunicación entre su servidor y el teléfono? Usan cifrado de extremo a extremo (preguntas frecuentes desprotegidas: ¿Mis mensajes son seguros?). Esto significa que su teléfono codifica primero su mensaje y luego lo envía al servidor de WhatsApp. Luego, el servidor cifra las respuestas y las envía de vuelta a su teléfono. Su teléfono descifró el mensaje y lo mostró en la pantalla. ¿Cómo ocurre este cifrado? Bueno, si estudias Criptografía, se puede deducir que para que ocurra una comunicación segura, el teléfono y el servidor deberían poder descifrar o cifrar el mensaje. Por lo tanto, necesitan intercambiar fichas. El primer token intercambiado debe ocurrir en el momento en que autentica su cliente de WhatsApp en el teléfono por primera vez (esa vez cuando WhatsApp envía un número de 4 dígitos para su verificación). Eso significa que su teléfono tiene el token para cifrar / descifrar mensajes del servidor de WhatsApp relacionados con su número de teléfono.
Eso es suficiente para el teléfono. Entonces, ¿cómo sabe el cliente web de WhatsApp con qué usuario se relacionan? Después de todo, ¿no hay autenticación de contraseña de usuario en primer lugar? La respuesta es, ¡quien debe autenticar / presentar la identidad del usuario es el teléfono que tenía! Porque su teléfono sabe qué número de teléfono está utilizando y también tiene el token que demuestra su identidad.
Probablemente se esté preguntando por qué el cliente web mostró el código QR en lugar del campo de texto para ingresar su número de teléfono. Bueno, porque era más ordenado y menos complicado. Déjame explicarte cómo funciona esto probablemente. Primero, observe que teníamos al menos 3 entidades diferentes en este esquema de autenticación. El primero es el cliente de WhatsApp en su teléfono inteligente (aplicación WhatsApp, sin juego de palabras). Luego, el cliente web de WhatsApp que abriste en la pestaña de tu navegador. El último es, por supuesto, el servidor de WhatsApp en algún lugar de Internet.
1. El cliente web muestra el código QR.
Este código en realidad contiene un token para identificar de forma exclusiva a su cliente web (la pestaña del navegador que utiliza). Para evitar confusiones, llamémoslo WebId. El cliente web solicita continuamente permiso para un determinado WebId al servidor de WhatsApp. Pero, el servidor de WhatsApp lo rechaza. Por qué, porque todavía no está autenticado por el teléfono que tenía.
2. El cliente del teléfono (su aplicación WhatsApp en su teléfono inteligente) lee el código QR
El cliente del teléfono leyó el código QR que contiene el WebId de su teléfono y quizás algún token de autenticación. Después de eso, el teléfono intenta autenticarse (dar permiso) para ese determinado WebId. O, en un lenguaje más amigable para los humanos, el cliente del teléfono le dice al servidor de WhatsApp que este cierto WebId puede acceder a cierta cuenta de WhatsApp.
3. El cliente web solicita acceso al servidor de WhatsApp
Ahora, el cliente del teléfono ya autentica este cierto WebId. El cliente web que solicita acceso al servidor de WhatsApp ahora puede continuar. ¡Ahora el cliente web muestra su cuenta de WhatsApp! ¿Cómo sabe el cliente web qué número de teléfono usa? Bueno, el cliente del teléfono también le dice su número de teléfono / cuenta / identidad al servidor de WhatsApp cuando autentica el WebId.
Así es como básicamente funciona la autenticación. ¡Fue muy bueno porque no tienes que ingresar tu número de teléfono! O escribiendo una contraseña. Su teléfono que tenía básicamente autentica su identidad, más o menos como una tarjeta de identidad.
Comunicación
Anteriormente mencioné que todo el historial de chat se almacena en su teléfono. Entonces, ¿cómo muestra el cliente web el historial de chat? ¡Sí, el cliente web está solicitando los datos a su teléfono! Bueno, a través del servidor de WhatsApp. Entonces, la solicitud del cliente web al servidor de WhatsApp, la solicitud del servidor de WhatsApp a su teléfono. ¿Cómo puede pasar esto? Cuando miré al cliente web, inmediatamente depuré la solicitud de red a través de Chrome Dev Tools. Estoy bastante sorprendido de que no tenga solicitudes AJAX en absoluto. Eso significa que el cliente web usa Web Socket para comunicarse con el servidor. Si vuelve a cargar el cliente web mientras abre Dev Tools, puede ver los registros de solicitud de socket web.
Web Socket
Entonces, ¿por qué Web Socket? ¿Qué es el Web Socket? Puede pensar en Web Socket como un AJAX más avanzado. Se especificó bajo la especificación HTML 5, que los navegadores modernos deberían admitir (pero no existen en los navegadores heredados). Como ya habrá escuchado, el borrador de especificaciones HTML 5 se finalizó recientemente el 28 de octubre de 2014 (consulte la especificación HTML5 finalizada, continúa la disputa sobre las especificaciones). Esta especificación solo sirve como guía para que otros desarrolladores de navegadores puedan seguir este estándar. Ya sabes, por lo que la web funcionará de la misma manera en todos los navegadores. El socket web permite la comunicación / interacción bidireccional entre el cliente web y el servidor web. Quizás, WhatsApp elija esto para permitir una comunicación más en tiempo real entre el cliente web y el cliente del teléfono. También hay (tal vez) alguna caída al usar el socket web.
1. La comunicación en tiempo real significa más recursos intensivos. Es por eso que WhatsApp solo permite que un cliente web esté activo a la vez.
2. El teléfono estaría conectado activamente al servidor de WhatsApp. Quizás eso implicaría más batería consumida y más tráfico de datos consumido. Es por eso que WhatsApp sugiere usar una conexión Wi Fi.
Conclusión
Creo que eso cubre más o menos la tecnología detrás de esto. Por supuesto, solo se basa en un análisis personal. Las personas que participan en el proyecto pueden transmitir mayores detalles. Para finalizar la explicación, hay varias conclusiones basadas en el análisis. Por supuesto, dado que solo se basó en el análisis, también puede estar equivocado.
WhatsApp no lanzó la versión del cliente web hasta hace poco porque desarrollarla se considera de baja prioridad. Hay varias razones, por ejemplo, la naturaleza distribuida de dónde se almacena el historial de chat, la prioridad establecida por los ejecutivos de la startup y la madurez de la tecnología HTML 5.
Si echamos un vistazo a los eventos recientes de tecnología, entonces sabemos que la mayoría de las razones se eliminan, por lo tanto, pueden lanzar la versión del cliente web.
1. WhatsApp ahora es más capaz de manejar otro producto separado, como el cliente web. Sabíamos esto: Facebook cierra el acuerdo de WhatsApp por $ 19 mil millones. Ahora tienen el capital y los recursos para manejar esto.
2. En realidad, muchos usuarios esperan usar WhatsApp en el escritorio. Podemos ver las respuestas del mercado al observar cuán populares son las soluciones alternativas de los usuarios para habilitar WhatsApp en el escritorio, como el uso de Bluestack. Ahora, desarrollar un cliente web también es una prioridad para eliminar a un competidor potencial. (Consulte también esto: Usuarios prohibidos de Whatsapp por usar la aplicación WhatsApp PLUS)
3. HTML 5 está muy maduro ahora. La tecnología para permitir que WhatsApp sincronice su historial de chat con su homólogo telefónico es mucho más estable desde que se finalizó HTML 5. Esto explica por qué solo admiten Chrome por ahora. Si la implementación de HTML 5 entre navegadores gana más estabilidad, el otro navegador seguirá. Creo que solo quieren centrarse primero en un navegador y ver cómo reaccionan los usuarios.