Metadata-Version: 2.1
Name: aiocometd-ng
Version: 0.5.5
Summary: CometD client for asyncio
Home-page: https://github.com/bensnyde/aiocometd-ng
Author: Benton Snyder
Author-email: benton@bensnyde.me
License: MIT
Project-URL: CI, https://travis-ci.org/robertmrk/aiocometd
Project-URL: Coverage, https://coveralls.io/github/robertmrk/aiocometd
Project-URL: Docs, http://aiocometd.readthedocs.io/
Keywords: asyncio aiohttp comet cometd bayeux push streaming
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Framework :: AsyncIO
Classifier: License :: OSI Approved :: MIT License
Requires-Python: >=3.10.0
License-File: LICENSE.txt
Requires-Dist: aiohttp >=3.1
Provides-Extra: dev
Requires-Dist: asynctest <1.0.0,>=0.12.0 ; extra == 'dev'
Requires-Dist: coverage <5.0,>=4.5 ; extra == 'dev'
Requires-Dist: docker >=3.5.1 ; extra == 'dev'
Requires-Dist: flake8 ; extra == 'dev'
Requires-Dist: pylint ; extra == 'dev'
Requires-Dist: mypy ; extra == 'dev'
Requires-Dist: Sphinx <2.0,>=1.7 ; extra == 'dev'
Requires-Dist: sphinxcontrib-asyncio >=0.2.0 ; extra == 'dev'
Requires-Dist: sphinx-autodoc-typehints ; extra == 'dev'
Requires-Dist: aioconsole <1.0.0,>=0.1.7 ; extra == 'dev'
Provides-Extra: docs
Requires-Dist: Sphinx <2.0,>=1.7 ; extra == 'docs'
Requires-Dist: sphinxcontrib-asyncio >=0.2.0 ; extra == 'docs'
Requires-Dist: sphinx-autodoc-typehints ; extra == 'docs'
Provides-Extra: examples
Requires-Dist: aioconsole <1.0.0,>=0.1.7 ; extra == 'examples'
Provides-Extra: tests
Requires-Dist: asynctest <1.0.0,>=0.12.0 ; extra == 'tests'
Requires-Dist: coverage <5.0,>=4.5 ; extra == 'tests'
Requires-Dist: docker >=3.5.1 ; extra == 'tests'
Requires-Dist: flake8 ; extra == 'tests'
Requires-Dist: pylint ; extra == 'tests'
Requires-Dist: mypy ; extra == 'tests'

aiocometd
=========

.. image:: https://badge.fury.io/py/aiocometd.svg
    :target: https://badge.fury.io/py/aiocometd
    :alt: PyPI package

.. image:: https://readthedocs.org/projects/aiocometd/badge/?version=latest
    :target: http://aiocometd.readthedocs.io/en/latest/?badge=latest
    :alt: Documentation Status

.. image:: https://travis-ci.org/robertmrk/aiocometd.svg?branch=develop
    :target: https://travis-ci.org/robertmrk/aiocometd
    :alt: Build status

.. image:: https://coveralls.io/repos/github/robertmrk/aiocometd/badge.svg
    :target: https://coveralls.io/github/robertmrk/aiocometd
    :alt: Coverage

.. image:: https://img.shields.io/badge/License-MIT-yellow.svg
    :target: https://opensource.org/licenses/MIT
    :alt: 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
-----

.. code-block:: python

    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 <cli_example_>`_ or for a more complex example with
a GUI check out the aiocometd-chat-demo_.

Documentation
-------------

https://aiocometd.readthedocs.io/

.. _aiohttp: https://github.com/aio-libs/aiohttp/
.. _CometD: https://cometd.org/
.. _Comet: https://en.wikipedia.org/wiki/Comet_(programming)
.. _asyncio: https://docs.python.org/3/library/asyncio.html
.. _Bayeux: https://docs.cometd.org/current/reference/#_bayeux
.. _ext: https://docs.cometd.org/current/reference/#_bayeux_ext
.. _cli_example: https://github.com/robertmrk/aiocometd/blob/develop/examples/chat.py
.. _aiocometd-chat-demo: https://github.com/robertmrk/aiocometd-chat-demo

Changelog
=========

0.4.5 (2019-03-14)
------------------

- Fix connection issues when used with reverse proxy servers with cookie based
  sticky sessions

0.4.4 (2019-02-26)
------------------

- Refactor the websocket transport implementation to use a single connection
  per client

0.4.3 (2019-02-12)
------------------

- Fix reconnection issue on Salesforce Streaming API

0.4.2 (2019-01-15)
------------------

- Fix the handling of invalid websocket transport responses
- Fix the handling of failed subscription responses

0.4.1 (2019-01-04)
------------------

- Add documentation links

0.4.0 (2019-01-04)
------------------

- Add type hints
- Add integration tests

0.3.1 (2018-06-15)
------------------

- Fix premature request timeout issue

0.3.0 (2018-05-04)
------------------

- Enable the usage of third party JSON libraries
- Fix detection and recovery from network failures

0.2.3 (2018-04-24)
------------------

- Fix RST rendering issues

0.2.2 (2018-04-24)
------------------

- Fix documentation typos
- Improve examples
- Reorganise documentation

0.2.1 (2018-04-21)
------------------

- Add PyPI badge to README

0.2.0 (2018-04-21)
------------------

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