Skip to main content

WebSocket client for Python with low level API options

Project description

docs Build Status codecov PyPI Downloads PyPI version

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. 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+.

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 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.

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 automatically tries to reconnect when a connection is lost, and provides a variety of event-based connection controls.

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.

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

websocket-client-1.0.0.tar.gz (58.6 kB view details)

Uploaded Source

Built Distribution

websocket_client-1.0.0-py2.py3-none-any.whl (68.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file websocket-client-1.0.0.tar.gz.

File metadata

  • Download URL: websocket-client-1.0.0.tar.gz
  • Upload date:
  • Size: 58.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.5

File hashes

Hashes for websocket-client-1.0.0.tar.gz
Algorithm Hash digest
SHA256 5051b38a2f4c27fbd7ca077ebb23ec6965a626ded5a95637f36be1b35b6c4f81
MD5 b4bd5d392263bb81c932f29d6c974917
BLAKE2b-256 97abf45394f0db306bdcdf78e7922e942117731023e31f44f4dd8bdd926c2391

See more details on using hashes here.

Provenance

File details

Details for the file websocket_client-1.0.0-py2.py3-none-any.whl.

File metadata

  • Download URL: websocket_client-1.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 68.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.5

File hashes

Hashes for websocket_client-1.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 57f876f1af4731cacb806cf54d02f5fbf75dee796053b9a5b94fd7c1d9621db9
MD5 6864744205c75535204523597a9dbd21
BLAKE2b-256 bad1501076b54481412df1bc4cdd1fe479f66e17857c63ec5981bedcdc2ca793

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page