Skip to content

Unwebsockify is a TCP to WebSocket proxy/bridge -- like a reverse websockify.

License

Notifications You must be signed in to change notification settings

maltejk/unwebsockify

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Unwebsockify is a TCP to WebSocket proxy/bridge -- like a reverse websockify.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 95.2%
  • Dockerfile 4.8%