A simple WebSocket server
Based on simple-websocket-server.
- RFC 6455 (All latest browsers)
- TLS/SSL out of the box
- Passes Autobahns Websocket Testsuite
- Support for Python 2 and 3
Installation
pip install simple-websocket-server
Echo Server Example
from simple_websocket_server import WebSocketServer, WebSocket
class SimpleEcho(WebSocket):
def handle(self):
# echo message back to client
self.send_message(self.data)
def connected(self):
print(self.address, 'connected')
def handle_close(self):
print(self.address, 'closed')
server = WebSocketServer('', 8000, SimpleEcho)
server.serve_forever()
Open tests/websocket.html and connect to the server.
Chat Server Example
from simple_websocket_server import WebSocketServer, WebSocket
class SimpleChat(WebSocket):
def handle(self):
for client in clients:
if client != self:
client.send_message(self.address[0] + u' - ' + self.data)
def connected(self):
print(self.address, 'connected')
for client in clients:
client.send_message(self.address[0] + u' - connected')
clients.append(self)
def handle_close(self):
clients.remove(self)
print(self.address, 'closed')
for client in clients:
client.send_message(self.address[0] + u' - disconnected')
clients = []
server = WebSocketServer('', 8000, SimpleChat)
server.serve_forever()
Open multiple tests/websocket.html and connect to the server.
Want to get up and running faster?
There is an example which provides a simple echo and chat server
Echo Server
python tests/example_server.py --example echo
Chat Server (open up multiple tests/websocket.html files)
python tests/example_server.py --example chat
TLS/SSL Example
-
Generate a certificate with key
openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pem -
Run the secure TLS/SSL server (in this case the cert.pem file is in the same directory)
python tests/example_server.py --example chat --ssl 1 -
Offer the certificate to the browser by serving tests/websocket.html through https. The HTTPS server will look for cert.pem in the local directory. Ensure the tests/websocket.html is also in the same directory to where the server is run.
python tests/simple_https_server.py -
Open a web browser to: https://localhost:443/tests/websocket.html
-
Change ws://localhost:8000/ to wss://localhost:8000 and click connect.
Note: if you are having problems connecting, ensure that the certificate is added in your browser against the exception https://localhost:8000 or whatever host:port pair you want to connect to.
For the Programmers
connected: called when handshake is complete
- self.address: TCP address port tuple of the endpoint
handle_close: called when the endpoint is closed or there is an error
- self.address: TCP address port tuple of the endpoint
handle: gets called when there is an incoming message from the client endpoint
- self.address: TCP address port tuple of the endpoint
- self.opcode: the WebSocket frame type (STREAM, TEXT, BINARY)
- self.data: bytearray (BINARY frame) or unicode string payload (TEXT frame)
- self.request: HTTP details from the WebSocket handshake (refer to BaseHTTPRequestHandler)
send_message: send some text or binary data to the client endpoint
- sending data as a unicode object will send a TEXT frame
- sending data as a bytearray object will send a BINARY frame
close: send close frame to endpoint
Licensing
MIT
Release files for simple-websocket-server 0.4.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| simple-websocket-server-0.4.4.tar.gz | 10.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| simple_websocket_server-0.4.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.9 kB
Release files / simple-websocket-server-0.4.4.tar.gz
| Download URL | simple-websocket-server-0.4.4.tar.gz |
|---|---|
| Size | 10.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d083aaa69eefcb6fc87c009d720c0c7d6fe8d95135dc18f855a5688576c33ae6
|
|
BLAKE2b-256 checksum How to use checksums |
eb6ba46e3783168e5e11ec18e88d7650cb242e5a22b8228e9ad8b2375c68afe8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.4
|
Release files / simple_websocket_server-0.4.4-py3-none-any.whl
| Download URL | simple_websocket_server-0.4.4-py3-none-any.whl |
|---|---|
| Size | 8.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2d0892a473fe0479f80aed63505d27088a463a420aa085d8c7025e863d0ee3b7
|
|
BLAKE2b-256 checksum How to use checksums |
68a38ee8c7e6426825476f196fc09bb2d1cac4eafdddd3782ce27768d82c7b1d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.4
|