Unwebsockify is a TCP to WebSocket proxy/bridge -- like a reverse websockify.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Jim Paris 406a098a3c Add MIT license 2 years ago
.gitignore Add README 2 years ago
Dockerfile Add README 2 years ago
LICENSE Add MIT license 2 years ago
README.md Add README 2 years ago
requirements.txt Add README 2 years ago
unwebsockify.py Initial commit 4 years ago


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.

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: 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


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.