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 BasePubSubWebSocket 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 import BasePubSubWebSocket

class SimplePubSubWebsocket(BasePubSubWebSocket):
    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 = SimplePubSubWebsocket(websocket, 'connected_clients')
    await ssw.run()

BasePubSubWebSocket constructor parameters

Parameter Mandatory Default Description
websocket yes - the fastapi websocket instance
channel_id yes - a custom unique id that identifies that operation. used by connection manager to group clients connected in the same channel
redis_credentials no None. if not passed, uses the dict in-memory implementation redis host, port, username, password and db configuration

A minimum 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.2.0.tar.gz (3.3 kB view details)

Uploaded Source

Built Distribution

fastapi_pubsub-0.2.0-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fastapi_pubsub-0.2.0.tar.gz
  • Upload date:
  • Size: 3.3 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.2.0.tar.gz
Algorithm Hash digest
SHA256 fe41d5eb62071aeb76b8a348fbbddadf182982b0104463b1ffcdbae1e74c79e3
MD5 03bc58dace7b3101cbedbe26256bd9b0
BLAKE2b-256 c92a056d3054b2096032647a77246867e4594cfc293fb75b39a70ab178c7edae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fastapi_pubsub-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a13eddc1eb7a64ccb0cbb752a4c56dd4a9e764b9c55a28edb0f2f15666171bb9
MD5 8848c1a5c7ce3419b1c1213edc1a386e
BLAKE2b-256 ad82b8ff5022d969d5fd7bb0f48d976d5f7b3c7f90dc39aaaa8f99d8acd55499

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