Bug#701822: ITP: websockify -- WebSockets support for any application/server
Owner: Thomas Goirand <firstname.lastname@example.org>
* Package name : websockify
Version : 0.3.0
Upstream Author : Joel Martin <email@example.com>
* URL : https://github.com/kanaka/websockify
* License : GPL-3
Programming Lang: Python
Description : WebSockets support for any application/server
websockify was formerly named wsproxy and was part of the noVNC project.
At the most basic level, websockify just translates WebSockets traffic to
normal socket traffic. Websockify accepts the WebSockets handshake, parses it,
and then begins forwarding traffic between the client and the target in both
Websockify supports all versions of the WebSockets protocol (Hixie and HyBi).
The older Hixie versions of the protocol only support UTF-8 text payloads. In
order to transport binary data over UTF-8 an encoding must used to encapsulate
the data within UTF-8.
With Hixie clients, Websockify uses base64 to encode all traffic to and from
the client. This does not affect the data between websockify and the server.
With HyBi clients, websockify negotiates whether to base64 encode traffic to
and from the client via the subprotocol header (Sec-WebSocket-Protocol). The
valid subprotocol values are 'binary' and 'base64' and if the client sends
both then the server (the python implementation) will prefer 'binary'. The
'binary' subprotocol indicates that the data will be sent raw using binary
WebSocket frames. Some HyBi clients (such as the Flash fallback and older
Chrome and iOS versions) do not support binary data which is why the
negotiation is necessary.