A simple WebSocket server
Project description
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
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file simple-websocket-server-0.4.4.tar.gz
.
File metadata
- Download URL: simple-websocket-server-0.4.4.tar.gz
- Upload date:
- Size: 10.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d083aaa69eefcb6fc87c009d720c0c7d6fe8d95135dc18f855a5688576c33ae6 |
|
MD5 | 24077e55c4b458ec294b627123c962f0 |
|
BLAKE2b-256 | eb6ba46e3783168e5e11ec18e88d7650cb242e5a22b8228e9ad8b2375c68afe8 |
File details
Details for the file simple_websocket_server-0.4.4-py3-none-any.whl
.
File metadata
- Download URL: simple_websocket_server-0.4.4-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2d0892a473fe0479f80aed63505d27088a463a420aa085d8c7025e863d0ee3b7 |
|
MD5 | 25ce298f44f11a5c96acf02fcd7298a1 |
|
BLAKE2b-256 | 68a38ee8c7e6426825476f196fc09bb2d1cac4eafdddd3782ce27768d82c7b1d |