All Projects → websocket-client → Websocket Client

websocket-client / Websocket Client

Licence: lgpl-2.1
WebSocket client for Python

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Websocket Client

Ws
Simple to use, blazing fast and thoroughly tested WebSocket client and server for Node.js
Stars: ✭ 17,419 (+519.89%)
Mutual labels:  websocket, websocket-client, rfc-6455
Php Wss
Web-socket server/client with multi-process and parse templates support on server and send/receive options on client
Stars: ✭ 117 (-95.84%)
Mutual labels:  websocket, websockets, websocket-client
Websocket Client
🔧 .NET/C# websocket client library
Stars: ✭ 297 (-89.43%)
Mutual labels:  websocket, websockets, websocket-client
Websocat
Command-line client for WebSockets, like netcat (or curl) for ws:// with advanced socat-like functions
Stars: ✭ 3,477 (+23.74%)
Mutual labels:  websockets, websocket-client, rfc-6455
Bolt Python
A framework to build Slack apps using Python
Stars: ✭ 190 (-93.24%)
Mutual labels:  websocket, websockets, websocket-client
Beast
HTTP and WebSocket built on Boost.Asio in C++11
Stars: ✭ 3,241 (+15.34%)
Mutual labels:  websocket, websockets, websocket-client
Websockets
Library for building WebSocket servers and clients in Python
Stars: ✭ 3,724 (+32.53%)
Mutual labels:  websocket, websockets, websocket-client
Node Slack Sdk
Slack Developer Kit for Node.js
Stars: ✭ 2,988 (+6.33%)
Mutual labels:  websocket, websockets, websocket-client
Starscream
Websockets in swift for iOS and OSX
Stars: ✭ 7,105 (+152.85%)
Mutual labels:  websocket, websockets, websocket-client
Gun
HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP.
Stars: ✭ 710 (-74.73%)
Mutual labels:  websocket, websockets, websocket-client
Bolt Js
A framework to build Slack apps using JavaScript
Stars: ✭ 1,971 (-29.86%)
Mutual labels:  websocket, websockets, websocket-client
Arduinowebsockets
arduinoWebSockets
Stars: ✭ 1,265 (-54.98%)
Mutual labels:  websocket, websockets, websocket-client
Python Slack Sdk
Slack Developer Kit for Python
Stars: ✭ 3,307 (+17.69%)
Mutual labels:  websocket, websockets, websocket-client
Java Slack Sdk
Slack Developer Kit (including Bolt for Java) for any JVM language
Stars: ✭ 393 (-86.01%)
Mutual labels:  websocket, websockets, websocket-client
Awesome Websockets
A curated list of Websocket libraries and resources.
Stars: ✭ 850 (-69.75%)
Mutual labels:  websocket, websockets, websocket-client
Claws
Awesome WebSocket CLient - an interactive command line client for testing websocket servers
Stars: ✭ 187 (-93.35%)
Mutual labels:  websocket, websockets, websocket-client
Fs2 Http
Http Server and client using fs2
Stars: ✭ 132 (-95.3%)
Mutual labels:  websockets, websocket-client
Osc Js
OSC library for Node.js, Electron, Chrome Apps, Webpages or any other JS application. It comes with a customizable Plugin API for WebSocket, UDP or bridge networking
Stars: ✭ 135 (-95.2%)
Mutual labels:  websockets, websocket-client
Websocket
WSServer is a fast, configurable, and extendable WebSocket Server for UNIX systems written in C (C11).
Stars: ✭ 144 (-94.88%)
Mutual labels:  websocket, websockets
Tap Tap Adventure
Tap Tap Adventure is a massively online 2D MMORPG set in the medieval times with twists.
Stars: ✭ 123 (-95.62%)
Mutual labels:  websocket, websockets

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 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-socks for proxy usage and wsaccel for a minor performance boost, use: pip3 install websocket-client[optional]
  • To install websockets to run unit tests using the local echo server, use: pip3 install websocket-client[test]
  • To install Sphinx and sphinx_rtd_theme to 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.

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.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),))
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].