8

Tengo un par de proyectos que se crearon usando hookbox para administrar el paso de mensajes en tiempo real entre clientes web y servidores. Hookbox fue genial: abstrajo totalmente la capa de transporte, exponiendo una interfaz de publicación/suscripción simple a través de diferentes canales con un elegante sistema de seguridad.Bibliotecas web en tiempo real: reemplace hookbox con socket.io o qué?

Desafortunadamente, el proyecto de la caja de conexiones ha caído rápidamente en desorden debido a la falta de voluntad del mantenedor original incluso para poner en el esfuerzo de entregar la propiedad. (Grrr!) Por lo tanto, es difícil considerarlo una plataforma viable.

¿Cuál es una buena plataforma para proporcionar comunicación en tiempo real con aplicaciones web? Requisitos:

  • Funciona sin problemas el navegador, utilizando HTML5 websockets o COMET como disponible. La elección del transporte debe ser invisible para la capa de aplicación. No me importa acerca de los navegadores antiguos (IE6)
  • de acceso de cliente de JavaScript y sistemas del lado del servidor (es decir, en PHP/Python/Ruby) - esto es fundamental
  • Proporciona una metáfora de publicación/suscripción con cargas útiles arbitrarias
  • permite a los clientes ver lo que otros clientes están conectados a un canal, es decir, la presencia de control de acceso
  • de grano fino a través de devoluciones de llamada a cualquier aplicación web (bueno tener)

he oído que toma. Yo puedo hacer algo de esto, pero tengo la sensación de que está en una capa más baja de la pila. ¿Se puede conectar a bibliotecas que no sean javascript? ¿Auth?

Respuesta

2

Aunque aún no lo he probado, comencé a buscar en Pusher una entrada Node Knockout 2011. Además de JavaScript, es compatible con los siguientes clientes no JS:

  • Objective-C
  • ActionScript
  • .NET & Silverlight
  • Rubí
  • Arduino

Si mensajería a través de un tercero es una posibilidad, puede probar el servicio de forma gratuita utilizando su plan Sandbox (20 conexiones & hasta 100K mensajes/día) y vea si satisface sus necesidades. (Tengo un poco de incertidumbre sobre el requisito de "presencia", aunque puede estar cubierto en los documentos).

+0

El código abierto sería bueno, al igual que los clientes de PHP y Python, pero por lo demás, esto parece ser lo que estoy buscando. ¡Gracias! – Leopd

3

He tenido una muy buena experiencia con NodeJS y Socket.IO en los últimos 8 meses. El componente del lado del servidor ha sido muy estable para mí: puedo dejarlo funcionando con un volumen de mensajes muy alto y su memoria residente nunca realmente se mueve por encima de los 20 MB. Hasta ahora solo he podido dejarlo funcionando durante aproximadamente 4 semanas sin finalizar el servidor, pero eso fue solo porque necesitaba actualizar mi código de servidor.

Funciona sin problemas el navegador, utilizando HTML5 websockets o COMET como disponible. La elección del transporte debe ser invisible para la capa de aplicación. No me importa acerca de los navegadores antiguos (IE6)

proporciona una metáfora de publicación/suscripción con cargas útiles arbitrarias

Socket.IO es también una fantástica pieza de software. Está en desarrollo activo, y tiene una simple abstracción de estilo pub/sub incorporada usando la semántica de EventEmitter (NodeJS) de 'on' (suscribir) y 'emit' (publicar). También es muy transparente en el lado del cliente con respecto al transporte que se utiliza. Lo usé principalmente para el soporte directo de WebSocket, pero puede recurrir a sockets basados ​​en Flash, xhr-polling y jsonp polling.

acceso de cliente de ambas javascript y sistemas del lado del servidor (es decir, en php/python/rubí) - esto es crítico

NodeJS es JavaScript, que se ejecuta en el motor V8. Tiene una tonelada de 3rd party modules que proporcionan buenas abstracciones, así como la interfaz con componentes externos, como bases de datos o colas de mensajes, entre muchas otras cosas. En lo que respecta a golpear el sistema con php/python/ruby, funcionaría como con golpear a cualquier otro servidor.Elija su método de comunicación (TCP/IP básico, o tal vez HTTP POST o GET, o incluso a través del sistema de archivos) y a NodeJS realmente no le importa quién proporciona los datos. Personalmente, he implementado un cliente C# que funciona muy bien.

permite a los clientes ver lo que otros clientes están conectados a un canal, es decir, la presencia

No no tiene ningún incorporado en la lógica 'presencia', aunque con el construido en el 'pub/sub 'lógica ya instalada en Socket.IO, todo lo que tendría que hacer es almacenar el estado en el servidor para que los nuevos clientes puedan recuperar los datos de presencia existentes. Implementé mi propio pub/sub básico en el servidor que conserva el estado, y todos juntos (incluido el código del servidor NodeJS y los staubs básicos de Socket.IO) eran solo 50 líneas de JavaScript (incluido el espacio en blanco).

control de acceso de grano fino a través de devoluciones de llamada a cualquier aplicación web (bueno tener)

No está seguro de lo que entendemos por 'control de acceso de grano fino a través de devoluciones de llamada a cualquier aplicación web (bueno tener) '. La metáfora de pub/sub evento/observador que tienen usa devoluciones de llamada, por lo que enlazar acciones específicas a eventos específicos.

Do auth?

No he tenido necesidad, todavía, de hacer ninguna autenticación para nuestros sistemas, por lo que no puedo hablar directamente con ella. Sin embargo, si navega por los módulos de NodeJS notará que hay muchos módulos de autenticación disponibles, incluidos LDAP y OAuth, sin mencionar el one module que dice hacer "OpenId, Google, OAuth, Twitter, LinkedIn, Yahoo, Readability, Dropbox, Justin". .tv, Vimeo, Tumblr, OAuth2, Facebook, GitHub, Instagram, Foursquare, Box.net, LDAP "

+0

Claro, es bastante fácil utilizar cualquier idioma para publicar mensajes en un sistema de pub/sub utilizando una interfaz REST. La parte difícil e importante es enviar mensajes en tiempo real a un cliente que no sea javascript. Obtener devoluciones de llamadas en tiempo real a otros idiomas requiere una biblioteca cliente no trivial. – Leopd

0

Recomiendo usar node.js que tiene muchas bibliotecas para varias cosas. Una biblioteca para mensajería en tiempo real es now.js. No tengo mucha experiencia con esto pero lo he intentado y diría que funcionó bien y tiene todo lo que dijo que necesita.

+0

Parece que no es compatible con ningún cliente que no sea javascript ni tiene ningún tipo de control de acceso. – Leopd

+0

El control de acceso se puede probablemente usar usando otras bibliotecas para node.js. Al interpretar su pregunta, necesita acceso desde navegadores y un programa del lado del servidor. Si escribe su servidor en node.js, tiene ambos. ¿Te he entendido mal? – Godisemo

+0

Sí, has malentendido. Estoy buscando una solución, no una API que me permita construir una solución. – Leopd

Cuestiones relacionadas