WebSocket client for Python with low level API options
Project description
websocket-client
websocket-client is a WebSocket client for Python. It provides access to low level APIs for WebSockets. websocket-client implements version hybi-13 of the WebSocket protocol. This client does not currently support the permessage-deflate extension from RFC 7692.
Documentation
This project's documentation can be found at https://websocket-client.readthedocs.io/
Contributing
Please see the contribution guidelines
Installation
You can use either python3 setup.py install or pip3 install websocket-client
to install. This module is tested on Python 3.6+.
There are several optional dependencies that can be installed to enable specific websocket-client features.
- To install
python-socksfor proxy usage andwsaccelfor a minor performance boost, use:pip3 install websocket-client[optional] - To install
websocketsto run unit tests using the local echo server, use:pip3 install websocket-client[test] - To install
Sphinxandsphinx_rtd_themeto build project documentation, use:pip3 install websocket-client[docs]
Footnote: Some shells, such as zsh, require you to escape the [ and ] characters with a \.
Usage Tips
Check out the documentation's FAQ for additional guidelines: https://websocket-client.readthedocs.io/en/latest/faq.html
Known issues with this library include lack of WebSocket Compression support (RFC 7692) and minimal threading documentation/support.
Performance
The send and validate_utf8 methods can sometimes be bottleneck.
You can disable UTF8 validation in this library (and receive a
performance enhancement) with the skip_utf8_validation parameter.
If you want to get better performance, install wsaccel. While
websocket-client does not depend on wsaccel, it will be used if
available. wsaccel doubles the speed of UTF8 validation and
offers a very minor 10% performance boost when masking the
payload data as part of the send process. Numpy used to
be a suggested performance enhancement alternative, but
issue #687
found it didn't help.
Examples
Many more examples are found in the examples documentation.
Long-lived Connection
Most real-world WebSockets situations involve longer-lived connections.
The WebSocketApp run_forever loop will automatically try to reconnect when a
connection is lost if it is provided with a dispatcher parameter,
and provides a variety of event-based connection controls.
This example uses rel
for the dispatcher to provide automatic reconnection.
import websocket
import _thread
import time
import rel
rel.safe_read()
def on_message(ws, message):
print(message)
def on_error(ws, error):
print(error)
def on_close(ws, close_status_code, close_msg):
print("### closed ###")
def on_open(ws):
print("Opened connection")
if __name__ == "__main__":
websocket.enableTrace(True)
ws = websocket.WebSocketApp("wss://api.gemini.com/v1/marketdata/BTCUSD",
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close)
ws.run_forever(dispatcher=rel) # Set dispatcher to automatic reconnection
rel.signal(2, rel.abort) # Keyboard Interrupt
rel.dispatch()
Short-lived Connection
This is if you want to communicate a short message and disconnect immediately when done. For example, if you want to confirm that a WebSocket server is running and responds properly to a specific request.
from websocket import create_connection
ws = create_connection("ws://echo.websocket.events/")
print(ws.recv())
print("Sending 'Hello, World'...")
ws.send("Hello, World")
print("Sent")
print("Receiving...")
result = ws.recv()
print("Received '%s'" % result)
ws.close()
If you want to customize socket options, set sockopt, as seen below:
from websocket import create_connection
ws = create_connection("ws://echo.websocket.events/",
sockopt=((socket.IPPROTO_TCP, socket.TCP_NODELAY),))
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file websocket-client-1.3.1.tar.gz.
File metadata
- Download URL: websocket-client-1.3.1.tar.gz
- Upload date:
- Size: 47.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6278a75065395418283f887de7c3beafb3aa68dada5cacbe4b214e8d26da499b
|
|
| MD5 |
b7e7cbd8dff1522e29fbd0f2b9f2d9a0
|
|
| BLAKE2b-256 |
8d12cd10d050f7714ccc675b486cdcbbaed54c782a5b77da2bb82e5c7b31fb40
|
File details
Details for the file websocket_client-1.3.1-py3-none-any.whl.
File metadata
- Download URL: websocket_client-1.3.1-py3-none-any.whl
- Upload date:
- Size: 54.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
074e2ed575e7c822fc0940d31c3ac9bb2b1142c303eafcf3e304e6ce035522e8
|
|
| MD5 |
c703cb8f3f874a5f208d264e0ebe4d9a
|
|
| BLAKE2b-256 |
35218614b6de7c35d0bc584da13c45b8b08e404eee28a0504c1d00f5e1aa0a23
|