File: README.rst

package info (click to toggle)
python-aioice 0.10.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 424 kB
  • sloc: python: 3,832; makefile: 20; sh: 1
file content (87 lines) | stat: -rw-r--r-- 2,804 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
aioice
======

|rtd| |pypi-v| |pypi-pyversions| |pypi-l| |pypi-wheel| |tests| |codecov|

.. |rtd| image:: https://readthedocs.org/projects/aioice/badge/?version=latest
   :target: https://aioice.readthedocs.io/

.. |pypi-v| image:: https://img.shields.io/pypi/v/aioice.svg
    :target: https://pypi.python.org/pypi/aioice

.. |pypi-pyversions| image:: https://img.shields.io/pypi/pyversions/aioice.svg
    :target: https://pypi.python.org/pypi/aioice

.. |pypi-l| image:: https://img.shields.io/pypi/l/aioice.svg
    :target: https://pypi.python.org/pypi/aioice

.. |pypi-wheel| image:: https://img.shields.io/pypi/wheel/aioice.svg
    :target: https://pypi.python.org/pypi/aioice

.. |tests| image:: https://github.com/aiortc/aioice/workflows/tests/badge.svg
    :target: https://github.com/aiortc/aioice/actions

.. |codecov| image:: https://img.shields.io/codecov/c/github/aiortc/aioice.svg
    :target: https://codecov.io/gh/aiortc/aioice

What is ``aioice``?
-------------------

``aioice`` is a library for Interactive Connectivity Establishment (RFC 5245)
in Python. It is built on top of ``asyncio``, Python's standard asynchronous
I/O framework.

Interactive Connectivity Establishment (ICE) is useful for applications that
establish peer-to-peer UDP data streams, as it facilitates NAT traversal.
Typical usecases include SIP and WebRTC.

To learn more about ``aioice`` please `read the documentation`_.

.. _read the documentation: https://aioice.readthedocs.io/en/stable/

Example
-------

.. code:: python

    import asyncio
    import aioice

    async def connect_using_ice():
        connection = aioice.Connection(ice_controlling=True)

        # gather local candidates
        await connection.gather_candidates()

        # send your information to the remote party using your signaling method
        send_local_info(
            connection.local_candidates,
            connection.local_username,
            connection.local_password)

        # receive remote information using your signaling method
        remote_candidates, remote_username, remote_password = get_remote_info()

        # perform ICE handshake
        for candidate in remote_candidates:
            await connection.add_remote_candidate(candidate)
        await connection.add_remote_candidate(None)
        connection.remote_username = remote_username
        connection.remote_password = remote_password
        await connection.connect()

        # send and receive data
        await connection.sendto(b'1234', 1)
        data, component = await connection.recvfrom()

        # close connection
        await connection.close()

    asyncio.run(connect_using_ice())

License
-------

``aioice`` is released under the `BSD license`_.

.. _BSD license: https://aioice.readthedocs.io/en/stable/license.html