Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi_pubsub-0.1.0.tar.gz (3.0 kB view hashes)

Uploaded Source

Built Distribution

fastapi_pubsub-0.1.0-py3-none-any.whl (3.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page