java - saber - Conéctate con clientes iOS y Android a SockJS Backend
ibuildapp (4)
Estoy desarrollando el backend de mensajería WebSocket utilizando Spring WebSockets , que usa el protocolo SockJS + STOMP. La razón por la que no utilizo WebSockets es porque necesitaré aprovechar la integración de seguridad que SockJS proporciona en Spring WebSockets y también otras características interesantes de SockJS, como salas, suscripciones, etc. Me preguntaba si esta es una buena opción para usar. de modo que las aplicaciones de cliente móvil (iOS y Android) y Web puedan conectarse fácilmente al servidor backend y realizar mensajes. Si es así, entonces qué bibliotecas puedo usar para iOS y Android.
En la página SockJS GitHub también están listando las bibliotecas de clientes disponibles, pero no iOS ni Android. Entonces, me pregunto si SockJS vale la pena usarlo solo por eso.
Descubrí que para la biblioteca Primus-Objc ( página de GitHub ) del cliente de iOS, se afirma que pueden conectarse a native WebSockets, Socket.IO, SockJS or perhaps engine.io.
¿Es eso una afirmación verdadera? Y si eso es cierto, ¿qué hay de la calidad de esa biblioteca?
Y si está bien usar SockJS en la parte posterior, ¿también sería posible mostrar un código de ejemplo para iOS y Android para que pueda realizar una prueba de concepto en dispositivos móviles?
Si SockJS no es una buena opción para mí, sería mejor que compilar mi aplicación de mensajería con Socket.io + Node.js (con JavaScript). Socket.io me parece que tiene todas las bibliotecas de cliente necesarias para iOS ( biblioteca oficial por tipos Socket.IO ) y Android ( biblioteca oficial por tipos Socket.IO ).
Otra opción puede ser usar la biblioteca Netty-Socket.io y crear cada punto final manualmente sin ninguna ayuda de Spring Framework (que estoy considerando usar) pero hay un pequeño desafío que tendré que enfrentar, eso es seguridad. Alguien en realidad ya intentó hacerlo ( el mismo autor hizo una pregunta en la página oficial de Github de Netty-Socket.IO ) pero parece que aún no tuvo suerte en resolverlo.
A continuación encontrará referencias útiles relacionadas con sus requisitos tanto para iOS como para Android.
SockJS puede ser interesante porque proporciona transportes no-ws. El solo uso de WebSockets puede no ser posible en todas las situaciones.
Hay un cliente SockJs multiplataforma del proyecto OpenFL :
https://github.com/jeremyfa/openfl-sockjs
No se ha probado qué tan bien funciona, pero al menos para Android está usando JavaScript desde dentro de WebView, por lo que no debería ser diferente a JavaScript. Nuevamente, no está claro qué tan estrechamente se combina con OpenFL, pero el enfoque de usar WebView y el cliente SockJS de valores probablemente podría reutilizarse.
Tal vez haya pasado más de un año desde que se hizo la pregunta. Pero, porque está obteniendo los primeros resultados al buscar en Google para SockJS + Android. Por lo tanto, estoy publicando mi respuesta.
Desde mi experiencia con un proyecto reciente en el que trabajé, pudimos usar un cliente STOMP, como el que está aquí , para conectarnos con el backend de Spring Websocket desde la aplicación nativa de Android.
Y desde el navegador, aún puede utilizar el cliente SockJS para obtener compatibilidad entre los navegadores y websockets con respaldo.
Una nota para mencionar que al usar solo el cliente STOMP para conectarse a websocket nativo, la URL será algo como ws: // mydomain / SockJSEndpoint / websocket , y cuando se use el cliente SockJS desde el navegador, la URL será como http : // mydomain / SockJSEndpoint.