Skip to content

robertmrk/aiocometd

Repository files navigation

aiocometd

PyPI package Documentation Status Build status Coverage MIT license

aiocometd is a CometD client built using asyncio, implementing the Bayeux protocol.

CometD is a scalable WebSocket and HTTP based event and message routing bus. CometD makes use of WebSocket and HTTP push technologies known as Comet to provide low-latency data from the server to browsers and client applications.

Features

  • Supported transports:
    • long-polling
    • websocket
  • Automatic reconnection after network failures
  • Extensions

Usage

import asyncio

from aiocometd import Client

async def chat():
    nickname = "John"

    # connect to the server
    async with Client("http://example.com/cometd") as client:

            # subscribe to channels to receive chat messages and
            # notifications about new members
            await client.subscribe("/chat/demo")
            await client.subscribe("/members/demo")

            # send initial message
            await client.publish("/chat/demo", {
                "user": nickname,
                "membership": "join",
                "chat": nickname + " has joined"
            })
            # add the user to the chat room's members
            await client.publish("/service/members", {
                "user": nickname,
                "room": "/chat/demo"
            })

            # listen for incoming messages
            async for message in client:
                if message["channel"] == "/chat/demo":
                    data = message["data"]
                    print(f"{data['user']}: {data['chat']}")

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(chat())

For more detailed usage examples take a look at the command line chat example or for a more complex example with a GUI check out the aiocometd-chat-demo.

Documentation

https://aiocometd.readthedocs.io/

Install

pip install aiocometd

Requirements