175 lines
6.4 KiB
Plaintext
175 lines
6.4 KiB
Plaintext
Metadata-Version: 2.1
|
|
Name: websocket-client
|
|
Version: 0.59.0
|
|
Summary: WebSocket client for Python with low level API options
|
|
Home-page: https://github.com/websocket-client/websocket-client.git
|
|
Author: liris
|
|
Author-email: liris.pp@gmail.com
|
|
License: LGPL version 2.1
|
|
Download-URL: https://github.com/websocket-client/websocket-client/releases
|
|
Project-URL: Documentation, https://websocket-client.readthedocs.io/
|
|
Project-URL: Source, https://github.com/websocket-client/websocket-client/
|
|
Keywords: websockets client
|
|
Platform: UNKNOWN
|
|
Classifier: Development Status :: 4 - Beta
|
|
Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)
|
|
Classifier: Programming Language :: Python
|
|
Classifier: Programming Language :: Python :: 2
|
|
Classifier: Programming Language :: Python :: 2.6
|
|
Classifier: Programming Language :: Python :: 2.7
|
|
Classifier: Programming Language :: Python :: 3
|
|
Classifier: Programming Language :: Python :: 3.4
|
|
Classifier: Programming Language :: Python :: 3.5
|
|
Classifier: Programming Language :: Python :: 3.6
|
|
Classifier: Programming Language :: Python :: 3.7
|
|
Classifier: Programming Language :: Python :: 3.8
|
|
Classifier: Programming Language :: Python :: 3.9
|
|
Classifier: Operating System :: MacOS :: MacOS X
|
|
Classifier: Operating System :: POSIX
|
|
Classifier: Operating System :: Microsoft :: Windows
|
|
Classifier: Topic :: Internet
|
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
Classifier: Intended Audience :: Developers
|
|
Requires-Python: >=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
|
|
Description-Content-Type: text/markdown
|
|
Requires-Dist: six
|
|
|
|
[](https://websocket-client.readthedocs.io/)
|
|
[](https://github.com/websocket-client/websocket-client/actions/workflows/build.yml)
|
|
[](https://codecov.io/gh/websocket-client/websocket-client)
|
|
[](https://pepy.tech/project/websocket-client)
|
|
[](https://pypi.org/project/websocket_client/)
|
|
|
|
# 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](https://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-13)
|
|
of the WebSocket procotol. This client does not currently support the
|
|
permessage-deflate extension from
|
|
[RFC 7692](https://tools.ietf.org/html/rfc7692).
|
|
|
|
## Documentation
|
|
|
|
This project's documentation can be found at
|
|
[https://websocket-client.readthedocs.io/](https://websocket-client.readthedocs.io/)
|
|
|
|
## Contributing
|
|
|
|
Please see the [contribution guidelines](https://github.com/websocket-client/websocket-client/blob/master/CONTRIBUTING.md)
|
|
|
|
## 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](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](https://websocket-client.readthedocs.io/en/latest/threading.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](https://websocket-client.readthedocs.io/en/latest/examples.html)
|
|
|
|
```python
|
|
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](https://websocket-client.readthedocs.io/en/latest/examples.html)
|
|
|
|
```python
|
|
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:
|
|
|
|
```python
|
|
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.
|
|
|
|
|