This package provides a server implementation of the Foxglove WebSocket protocol with examples. The protocol enables Foxglove Studio to ingest arbitrary “live” streamed data.
$ pip install foxglove-websocket
This package includes example servers demonstrating how to use JSON and Protobuf data. To install additional dependencies required for the examples, run:
$ pip install 'foxglove-websocket[examples]'
Run a simple example server that publishes messages on a single example_msg
topic:
-
JSON server – Uses JSON to encode message data and JSON Schema to describe the message layout.
python -m foxglove_websocket.examples.json_server
-
Protobuf server – Uses Protobuf to encode message data.
python -m foxglove_websocket.examples.protobuf_server
Note: You must exit each server (control + c) before starting up another.
To see data from any server, open Foxglove Studio with a Foxglove WebSocket connection to ws://localhost:8765/
:
To customize each server for your specifications, copy either server into a separate file like server.py
and make the desired adjustments to this template. Start up your server from the command line, using python3 server.py
.
The threaded_server
example demonstrates how to use the FoxgloveServer
class in a thread-safe way when interacting with a threaded middleware. Run the server using:
python -m foxglove_websocket.examples.threaded_server
When connected to the server in Foxglove Studio, use the Data Source Info panel to see channels appearing and disappearing, and a Plot panel to visualize data on each channel.
For a more detailed explanation, read the example's source code.
When developing or maintaining the foxglove-websocket
package, it is recommended to use pipenv
to manage development dependencies and virtualenv
.
pipenv install --dev
– Create avirtualenv
and install development dependenciespipenv shell
– Enter thevirtualenv