Presently the components of OpenVisualizer operate within a single process. We wish to extend experiment with extending this operation across processes and machines, as shown in the diagram below.
Gliffy | ||
---|---|---|
|
Messaging
Presently we implement EventBus messaging with PyDispatch, which provides communication between threads in a single process.
Between Processes
On an embedded LBR, we plan to use the native POSIX message queue due to its built-in availability. The posix_ipc module for Python provides access to this functionality.
Remote GUI host to LBR
WebSockets provide a standards-based protocol for bi-directional communication, textual or binary. We require bi-directional messaging. In general the LBR sends information to the Remote GUI. However, the GUI may signal to the LBR, for example to toggle DAGroot status.
Tools
Role | Tool | Notes |
---|---|---|
WebSocket client | websocket-client | Installed with pip. |
Other Implementations
Nanomsg and ZeroMQ provides a common messaging API for a variety of endpoints – threads, processes, and machines. It They are open source, but not standards. However, it would be efficient to use a single tool for messaging across all domains.
...
Nanomsg is developed by Martin Sústrik, the original author of ZeroMQ. Sústrik left ZeroMQ due to a dispute over trademarks, as described in a Linux Weekly News article.
...
Celery provides a distributed message queue, but is more heavy-duty and requires a message broker.