2011-11-16 14 views

Respuesta

9

Nunca he usado ZmqSocket.js, pero puedo decirle que probablemente no sea una buena idea (todavía). Esto se debe a que zmq aún asume que ambos pares conocen bien el protocolo y explotará si se les dan datos inválidos (sin embargo, están trabajando para solucionarlo).

Lo que hago ahora es tener un simple proxy basado en node.js que utiliza socket.io para comunicarse con los navegadores y empuja los datos en (y lee) una toma de zeromq, donde el resto de la aplicación es.


actualización en 2013: escribí sockjsproxy, que proxies esencialmente mensajes a/desde sockjs y zeromq, que le permite implementar el servidor en cualquier idioma que desee con sólo la aplicación de la (muy simple) basado en ZeroMQ protocolo.

Lo he usado personalmente con servidores Python y Scala para crear aplicaciones web en tiempo real.

3

Empecé a buscar una solución para usar un navegador web para una IU.

Tengo una aplicación Java que recopila información de varias fuentes, la analiza y almacena los resultados en una base de datos, permitiendo que otros sistemas la usen.

La aplicación Java proporciona información (registros, eventos, etc.) en un socket PUSH ZMQ y proporciona un socket REP para controlarlo (cambio de parámetros, solicitudes de diagnóstico, etc.).

Actualmente tengo una aplicación de Python con una interfaz de usuario que usa Tk y planeo reemplazarla con una interfaz web.

El problema que tengo con la oferta de JavaScript de ZMQ es que usa un componente de memoria flash, que no es compatible con iOS.

Haciendo un poco de Googoling me encontré con un post titulado "Interacting With ZeroMQ From the Browser" que utiliza NullMQ

espero que esto ayude.

1

Otra perspectiva: la implementación de un proxy WebSocket-to-ZeroMQ que maneja todo de las estrategias de ZeroMQ parece mucho trabajo, pero puede obtener muy rápidamente un proxy parcial ejecutándose. Al igual que Emil, estoy experimentando con un PyZMQ < --Tornado -> puente WebSocket; en mi caso, solo me importa recibir mensajes de sockets SUB.

En mi modelo, envío mensajes JSON desde el navegador al proxy, solicitando la creación de nuevos zócalos ZMQ. Cuando estos sockets reciben datos, los envían de vuelta al navegador a través de la misma conexión WebSocket.

Aquí está el python proxy backend, y mi javascript proxy frontend. En mi código de Python, la clase AsyncReciever es una envoltura muy delgada alrededor de ZMQStream que básicamente ejecuta la codificación/decodificación JSON. Si desea enviar bytes ZeroMQ en bruto al navegador, las cosas serían aún más fáciles: simplemente conecte una devolución de llamada ZMQSocket.on_message directamente al BridgeWebSocket.write_message.