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!
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
Hashes for fastapi_pubsub-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6341f69b6207679bb697e0244056f378568ddf8c29144ffb194e3c04b55378a0 |
|
MD5 | e80951971f4e1e617aa3016582c5eb48 |
|
BLAKE2b-256 | dbf54c2d9490185217c3b5b004e772e3d89e7d84915195554a227f6343dbcc47 |