|
|
@@ -0,0 +1,49 @@ |
|
|
|
Unwebsockify is a TCP to WebSocket proxy/bridge. It accepts a plain |
|
|
|
TCP connection and connects to a WebSocket server, effectively adding |
|
|
|
WS support to a client that does not natively support it. It is |
|
|
|
essentially the opposite of |
|
|
|
[websockify](https://github.com/novnc/websockify). |
|
|
|
|
|
|
|
Note that this only handles simple byte streams of data, with no |
|
|
|
support for conveying WebSockets message framing back to the client. |
|
|
|
In most cases, **specifying the WebSockets subprotocol (via |
|
|
|
`--subproto`) is necessary**, because the server expects it to match |
|
|
|
some particular string. |
|
|
|
|
|
|
|
# Install dependencies |
|
|
|
|
|
|
|
Using a virtual environment: |
|
|
|
|
|
|
|
python3 -m venv venv |
|
|
|
venv/bin/pip install -r requirements.txt |
|
|
|
venv/bin/python unwebsockify.py -h |
|
|
|
|
|
|
|
Or use docker (or replace `docker` with `podman`): |
|
|
|
|
|
|
|
docker build -t unwebsockify . |
|
|
|
docker run -p 13232:13232 unwebsockify -h |
|
|
|
|
|
|
|
# Usage |
|
|
|
|
|
|
|
usage: unwebsockify.py [-h] [--port PORT] [--listen ADDR] [--subproto SUBPROTO] URL |
|
|
|
|
|
|
|
positional arguments: |
|
|
|
URL WebSocket URL (ws://.. or wss://..) |
|
|
|
|
|
|
|
optional arguments: |
|
|
|
-h, --help show this help message and exit |
|
|
|
--port PORT, -p PORT TCP listen port |
|
|
|
--listen ADDR, -l ADDR TCP listen address |
|
|
|
--subproto SUBPROTO, -s SUBPROTO WebSocket subprotocol |
|
|
|
|
|
|
|
# Example |
|
|
|
|
|
|
|
Eclipse Mosquitto supports WebSockets on the server side, but not on |
|
|
|
the client side (for bridging). To bridge two MQTT instances via |
|
|
|
websockets, run unwebsockify on the client: |
|
|
|
|
|
|
|
venv/bin/python unwebsockify.py --port 13232 --subproto mqtt wss://server/ |
|
|
|
|
|
|
|
and configure and run the MQTT client instance with e.g. |
|
|
|
|
|
|
|
address 127.0.0.1:13232 |