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 procotol.
Documentation
This project's documentation can be found at https://websocket-client.readthedocs.io/
Contributing
Please see the contribution guidelines
Installation
First, install the following dependencies:
- six
- backports.ssl_match_hostname for Python 2.x
You can install the dependencies with the command pip install six
and
pip install backports.ssl_match_hostname
You can use either python setup.py install
or pip install websocket-client
to install. This module is tested on Python 2.7 and Python 3.4+. Python 3
support was first introduced in version 0.14.0, but is a work in progress.
Usage Tips
Check out the documentation's FAQ for additional guidelines: https://websocket-client.readthedocs.io/en/latest/faq.html
License
- LGPL version 2.1
Performance
The send
and validate_utf8
methods are very slow in pure Python. 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, please install both numpy and wsaccel, and import them into your
project files - these other libraries will automatically be used when available.
Note that wsaccel can sometimes cause other issues.
Long-lived Connection
Most real-world WebSockets situations involve longer-lived connections.
The WebSocketApp run_forever
loop automatically tries to reconnect when a
connection is lost, and provides a variety of event-based connection controls.
The project documentation has
additional examples
import websocket
try:
import thread
except ImportError:
import _thread as thread
import time
def on_message(ws, message):
print(message)
def on_error(ws, error):
print(error)
def on_close(ws):
print("### closed ###")
def on_open(ws):
def run(*args):
for i in range(3):
time.sleep(1)
ws.send("Hello %d" % i)
time.sleep(1)
ws.close()
print("thread terminating...")
thread.start_new_thread(run, ())
if __name__ == "__main__":
websocket.enableTrace(True)
ws = websocket.WebSocketApp("ws://echo.websocket.org/",
on_open = on_open,
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.run_forever()
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. The project documentation has additional examples
from websocket import create_connection
ws = create_connection("ws://echo.websocket.org/")
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.org/",
sockopt=((socket.IPPROTO_TCP, socket.TCP_NODELAY),))
Acknowledgements
Thanks to @battlemidget and @ralphbean for helping migrate this project to Python 3.
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
File details
Details for the file websocket_client-0.58.0.tar.gz
.
File metadata
- Download URL: websocket_client-0.58.0.tar.gz
- Upload date:
- Size: 48.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.0.0 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63509b41d158ae5b7f67eb4ad20fecbb4eee99434e73e140354dc3ff8e09716f |
|
MD5 | 8fc86b13dc97dc032855c6257f9168df |
|
BLAKE2b-256 | 4adf112c278ba1ead96786d24d973429ce1e1a2c86b9843183d9f8ef8c6330d7 |
Provenance
File details
Details for the file websocket_client-0.58.0-py2.py3-none-any.whl
.
File metadata
- Download URL: websocket_client-0.58.0-py2.py3-none-any.whl
- Upload date:
- Size: 61.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.0.0 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44b5df8f08c74c3d82d28100fdc81f4536809ce98a17f0757557813275fbb663 |
|
MD5 | 9ef8a9030cde8fe5cad81d060c36ab8a |
|
BLAKE2b-256 | 083380e0d4f60e84a1ddd9a03f340be1065a2a363c47ce65c4bd3bae65ce9631 |