A simple but yet elegant publish/subscribe socket implementation using FastAPI Websocket.
Project description
FastAPI Pub/Sub
A simple but yet elegant publish/subscribe socket implementation using FastAPI Websocket.
Installation
pip install fastapi-pubsub
How it works
FastAPI provides an awesome implementation of Websockets. But it can be painful to configure it to work as a publish/subscribe mechanism.
FastAPI Pub/Sub implemented a BasePubSubWebSocket
that handles all client's connections under the hood. All you have to do is extend this class, overriding the method generate_object_to_send(self)
with your desired logic.
from fastapi_pubsub import BasePubSubWebSocket
class SimplePubSubWebsocket(BasePubSubWebSocket):
async def generate_object_to_send(self):
# any logic that you want to implement to send to connected users
connections = self.connection_manager.get(self.websocket_id)
return {"num_connected_clients": len(connections)}
app = FastAPI()
@app.websocket("/ws/connected_clients")
async def online_players_endpoint(websocket: WebSocket):
ssw = SimplePubSubWebsocket(websocket, 'connected_clients')
await ssw.run()
BasePubSubWebSocket constructor parameters
Parameter | Mandatory | Default | Description |
---|---|---|---|
websocket | yes | - | the fastapi websocket instance |
channel_id | yes | - | a custom unique id that identifies that operation. used by connection manager to group clients connected in the same channel |
redis_credentials | no | None. if not passed, uses the dict in-memory implementation | redis host, port, username, password and db configuration |
A minimum example of a server/client communication can be seen here. Follow the instructions to see it working.
Contributing
Despite being full functional, this project is in a very early stage. Pull requests are very welcome!
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 fastapi_pubsub-0.2.0.tar.gz
.
File metadata
- Download URL: fastapi_pubsub-0.2.0.tar.gz
- Upload date:
- Size: 3.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe41d5eb62071aeb76b8a348fbbddadf182982b0104463b1ffcdbae1e74c79e3 |
|
MD5 | 03bc58dace7b3101cbedbe26256bd9b0 |
|
BLAKE2b-256 | c92a056d3054b2096032647a77246867e4594cfc293fb75b39a70ab178c7edae |
File details
Details for the file fastapi_pubsub-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: fastapi_pubsub-0.2.0-py3-none-any.whl
- Upload date:
- Size: 3.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a13eddc1eb7a64ccb0cbb752a4c56dd4a9e764b9c55a28edb0f2f15666171bb9 |
|
MD5 | 8848c1a5c7ce3419b1c1213edc1a386e |
|
BLAKE2b-256 | ad82b8ff5022d969d5fd7bb0f48d976d5f7b3c7f90dc39aaaa8f99d8acd55499 |