¿Es aconsejable usar HTML5 y Node.js para programar una aplicación de chat móvil?

En Figma, ejecutamos algunos servicios de comunicación basados ​​en Node.js. Podría ser una buena opción, pero hay algunos ángulos a considerar.

  1. ¿Nativo o web? Una aplicación web habilitada para dispositivos móviles es fácil de encontrar para los usuarios y comenzar a usarla de inmediato. Android e iOS funcionarían de la misma manera, una gran ventaja porque no habría necesidad de escribir y mantener dos aplicaciones nativas diferentes. Sin embargo, la ruta HTML5 tenía inconvenientes. Probablemente consumirá más batería que una aplicación nativa y el rendimiento está muy influenciado por la forma en que se escriben JavaScript y CSS. No podrá aprovechar los servicios de notificación basados ​​en inserción a menos que sea nativo, y cuando los usuarios cierren el navegador, los desconectará del chat. Una aplicación híbrida podría funcionar mejor, ya que la mayor parte de la capa de presentación del chat se escribe usando HTML5, pero las comunicaciones de red se escriben de forma nativa. Entonces solo necesita reescribir algunas partes para cada plataforma móvil nativa. Cualquiera de las vías tendrá que lidiar con una conectividad irregular almacenando en caché los mensajes que pueden “ponerse al día” con el cliente antes de la reconexión.
  2. Node.js en el backend? Esta es una buena opción porque Node es excelente para manejar muchas conexiones que tienen poco tráfico. La desventaja es que Node solo se ejecutará en un subproceso de CPU a la vez, por lo que si está creando más de unos pocos miles de conexiones activas concurrentes, es posible que tenga que pensar en ejecutar un clúster de procesos y tal vez descubrir una comunicación entre procesos sistema. Go lang ya tiene esto en la biblioteca de la clase base y podría ser más adecuado. La recolección de basura en Node también puede causar una congelación aleatoria temporal durante unos segundos, por lo que si esa pequeña pérdida de disponibilidad es importante, considere una alternativa compilada como Rust. El tamaño de almacenamiento dinámico de Node y otras características de manejo de memoria pueden controlarse mediante argumentos de línea de comandos, pero las aplicaciones de larga duración en Node pueden consumir rápidamente toda la memoria disponible en una máquina. Tenga cuidado con las pérdidas de memoria y considere usar el Script mecanográfico para ayudar a prevenirlas. Además, y no puedo enfatizar esto lo suficiente, debe usar un proxy front-end como nginx. Esto ayudará a asegurar su servicio y lo hará más inmune a los clientes lentos.

Entonces sí, es factible, pero hay compensaciones clave a considerar. Además, la dificultad principal no tendrá mucho que ver con HTML5 o Node: se tratará con interrupciones de conexión del cliente, problemas de monedas como el pedido de mensajes y la gestión operativa del lado del servidor.

Puedes hacer que funcione, si eso es lo que quieres decir.

More Interesting

¿Qué tan compleja sería una aplicación que cuenta personas en una ubicación?

¿Cuál es el alcance y el futuro del desarrollo de aplicaciones móviles híbridas en India?

En el desarrollo de software, al desarrollar una aplicación para App Store, ¿qué porcentaje de todo el proyecto representa la codificación?

¿Existe alguna herramienta de código abierto para la prueba de carga de aplicaciones móviles?

¿Cómo se cancelan las notificaciones móviles de WhatsApp cuando se leen mensajes en la web de WhatsApp?

¿Cuáles son las mejores aplicaciones móviles?

¿Cómo puedo comenzar a crear aplicaciones? ¿Por dónde empiezo desde cero si quiero estudiar por mi cuenta? ¿Cuáles son algunos buenos libros que puedo usar?

¿Cuál es el mejor marco HTML / js para usar para el desarrollo de una aplicación móvil en Cordova?

¿Vale la pena desarrollarlo en la plataforma Ovi?

¿Cuáles son los antecedentes preferidos para la aplicación del gobierno?

¿Cómo me convierto en desarrollador de aplicaciones?

¿Cuáles son las posibilidades de que alguien en el futuro cercano desarrolle una plataforma móvil que desafíe seriamente a Android e iOS?

¿Qué conocimiento de C # se requiere para desarrollar una aplicación de Windows Phone?

¿Debería preocuparme que las palabras / temas inusuales en las conversaciones que tengo a través de varias aplicaciones (por ejemplo, WhatsApp) y cerca de mi teléfono (incluido Siri) se correlacionen extrañamente con anuncios nunca antes vistos que aparecen en otras aplicaciones telefónicas?

¿Cuál es la mejor manera de ponerse en contacto con los desarrolladores de aplicaciones móviles en San Francisco?