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!

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


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.0.8.tar.gz (2.9 kB view details)

Uploaded Source

Built Distribution

fastapi_pubsub-0.0.8-py3-none-any.whl (3.3 kB view details)

Uploaded Python 3

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

Hashes for fastapi_pubsub-0.0.8.tar.gz
Algorithm Hash digest
SHA256 833337b59ae11992d77589961837bf41cd3833ffd2033e5f7caf476bfbe80eaa
MD5 8bd200e76a206245e5d16750bb80e34d
BLAKE2b-256 6621f42148126663f6af5add880686543f2193f774305b8700c18c7c4394d18b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fastapi_pubsub-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 e19a9336f62a6186375f1e9d148d7312db137ce09793912e9da0ae9916c5f8c5
MD5 8f804f441aea67413ef012b3c72dd084
BLAKE2b-256 8b387b9c808147755d57c611105c1ea0fa2f12ea766bc62d777da3c51da0165c

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