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 BaseWebSocket
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.base import BaseWebSocket
class SimpleWebsocket(BaseWebSocket):
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 = SimpleWebsocket(websocket, 'connected_clients')
await ssw.run()
A minimun 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!
In my opinion, a good next step here is to implement some in-memory database to store connections at connection_manager. For now, it uses a dictionary to handle it.
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.0.8.tar.gz
.
File metadata
- Download URL: fastapi_pubsub-0.0.8.tar.gz
- Upload date:
- Size: 2.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 833337b59ae11992d77589961837bf41cd3833ffd2033e5f7caf476bfbe80eaa |
|
MD5 | 8bd200e76a206245e5d16750bb80e34d |
|
BLAKE2b-256 | 6621f42148126663f6af5add880686543f2193f774305b8700c18c7c4394d18b |
File details
Details for the file fastapi_pubsub-0.0.8-py3-none-any.whl
.
File metadata
- Download URL: fastapi_pubsub-0.0.8-py3-none-any.whl
- Upload date:
- Size: 3.3 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 | e19a9336f62a6186375f1e9d148d7312db137ce09793912e9da0ae9916c5f8c5 |
|
MD5 | 8f804f441aea67413ef012b3c72dd084 |
|
BLAKE2b-256 | 8b387b9c808147755d57c611105c1ea0fa2f12ea766bc62d777da3c51da0165c |