rsocket-py
rsocket-py copied to clipboard
RSocket implementation in Python
RSocket-py
Python implementation of RSocket
Installation
The latest version from pypi can be installed using:
pip install rsocket
You may also install using some extras:
| Extra | Functionality | Documentation |
|---|---|---|
| rx | ReactiveX (v3) integration | Tutorial |
| reactivex | ReactiveX (v4) integration | Tutorial |
| aiohttp | aiohttp Websocket transport (server/client) | Tutorial |
| quart | Quart Websocket transport (server only) | |
| quic | QUIC transport | |
| websockets | Websockets transport (server only) | |
| asyncwebsockets | Websockets transport (client only) | |
| cli | Command line | Tutorial |
| optimized | Frame parse/serialize optimizations | |
| cloudevents | CloudEvents integration | |
| graphql | GraphQL integration | Tutorial |
For example:
pip install rsocket[reactivex]
Alternatively, download the source code, build a package:
python3 setup.py bdist_wheel
Use the resulting package from the ./dist folder, or install locally:
python3 setup.py install
Documentation
Documentation is available on the official rsocket.io site.
Examples
Examples can be found in the /examples folder. It contains various server and client usages. The following is a
table
denoting which client example is constructed to be run against which server example. Some examples
are in java to show compatibility with a different implementation. To run the java examples first build using mvn
package.
The examples/test_examples.py can be used to execute the relevant example server/client pairs.
client_springboot.py is set up to work against the Spring RSocket demo.
| server (python) | server (java) | client (python) | client(java) |
|---|---|---|---|
| server.py | client.py | ||
| server_quic.py | client_quic.py | ||
| server_with_lease.py | ClientWithLease | ||
| server_with_routing.py | client_with_routing.py | Client | |
| server_with_routing.py | client_rx.py | ||
| server_with_routing.py | client_reconnect.py | ||
| Server | run_against_example_java_server.py | ||
| ServerWithFragmentation | client_with_routing.py | ||
| server_quart_websocket.py | client_websocket.py | ||
| server_aiohttp_websocket.py | client_websocket.py | ||
| server_graphql.py | ServerWithGraphQL | client_graphql.py |
Build Status
Progress
- [X] Requests
- [X] Fire and forget
- [X] Response
- [X] Stream
- [X] Channel
- [X] Metadata push
- [ ] Features
- [X] Keepalive / Max server life
- [X] Lease
- [ ] Resume
- [X] Fragmentation
- [X] Extensions
- [X] Composite metadata
- [X] Per Stream Mimetype
- [X] Routing
- [X] Authentication
- [ ] Transports
- [X] TCP
- [X] Websocket (WS, WSS) - Quart and aiohttp integration
- [X] QUIC
- [X] HTTP/3
- [ ] HTTP/2
- [ ] Aeron
- [X] RxPy Integration
- [X] Stream Response
- [X] Channel Response
- [X] Channel Requester stream
- [X] Response
- [X] Other
- [X] Reconnect
- [X] Load balancing
- [X] Server routing definition helper (Flask like syntax)
- [X] Reactivex integration (v3, v4) server/client side
- [X] Command line interface