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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file fastapi_pubsub-0.1.0.tar.gz.

File metadata

  • Download URL: fastapi_pubsub-0.1.0.tar.gz
  • Upload date:
  • Size: 3.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for fastapi_pubsub-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c72750ac3557d946d8fbd5c4dd63b7cffa799583cf831e6457e1e6e3d2f7b8cc
MD5 78bf0df2c1e2f4dfe11369eb1f7cdce7
BLAKE2b-256 6c52353ca40696a20f60600fc275769adfc1ed9682817c85c6b6439ad760ffcf

See more details on using hashes here.

File details

Details for the file fastapi_pubsub-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for fastapi_pubsub-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6341f69b6207679bb697e0244056f378568ddf8c29144ffb194e3c04b55378a0
MD5 e80951971f4e1e617aa3016582c5eb48
BLAKE2b-256 dbf54c2d9490185217c3b5b004e772e3d89e7d84915195554a227f6343dbcc47

See more details on using hashes here.

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