Sign inSign up

maltejk/unwebsockify

By maltejk

•Updated over 4 years ago

Image
0

148

maltejk/unwebsockify repository overview

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

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

Tag summary

Content type

Image

Digest

Size

20.7 MB

Last updated

over 4 years ago

docker pull maltejk/unwebsockify