mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2025-12-31 20:36:24 +00:00
80 lines
2.7 KiB
ReStructuredText
80 lines
2.7 KiB
ReStructuredText
Identify Push Protocol Demo
|
|
===========================
|
|
|
|
This example demonstrates how to use the libp2p ``identify-push`` protocol, which allows nodes to proactively push their identity information to peers when it changes.
|
|
|
|
.. code-block:: console
|
|
|
|
$ python -m pip install libp2p
|
|
Collecting libp2p
|
|
...
|
|
Successfully installed libp2p-x.x.x
|
|
$ identify-push-demo
|
|
==== Starting Identify-Push Example ====
|
|
|
|
Host 1 listening on /ip4/127.0.0.1/tcp/xxxxx/p2p/QmAbCdEfGhIjKlMnOpQrStUvWxYz
|
|
Peer ID: QmAbCdEfGhIjKlMnOpQrStUvWxYz
|
|
Host 2 listening on /ip4/127.0.0.1/tcp/xxxxx/p2p/QmZyXwVuTaBcDeRsSkJpOpWrSt
|
|
Peer ID: QmZyXwVuTaBcDeRsSkJpOpWrSt
|
|
|
|
Connecting Host 2 to Host 1...
|
|
Host 2 successfully connected to Host 1
|
|
|
|
Host 1 pushing identify information to Host 2...
|
|
Identify push completed successfully!
|
|
|
|
Example completed successfully!
|
|
|
|
There is also a more interactive version of the example which runs as separate listener and dialer processes:
|
|
|
|
.. code-block:: console
|
|
|
|
$ identify-push-listener-dialer-demo
|
|
|
|
==== Starting Identify-Push Listener on port 8888 ====
|
|
|
|
Listener host ready!
|
|
Listening on: /ip4/127.0.0.1/tcp/8888/p2p/QmUiN4R3fNrCoQugGgmmb3v35neMEjKFNrsbNGVDsRHWpM
|
|
Peer ID: QmUiN4R3fNrCoQugGgmmb3v35neMEjKFNrsbNGVDsRHWpM
|
|
|
|
Run dialer with command:
|
|
identify-push-listener-dialer-demo -d /ip4/127.0.0.1/tcp/8888/p2p/QmUiN4R3fNrCoQugGgmmb3v35neMEjKFNrsbNGVDsRHWpM
|
|
|
|
Waiting for incoming connections... (Ctrl+C to exit)
|
|
|
|
Copy the line that starts with ``identify-push-listener-dialer-demo -d ...``, open a new terminal in the same
|
|
folder and paste it in:
|
|
|
|
.. code-block:: console
|
|
|
|
$ identify-push-listener-dialer-demo -d /ip4/127.0.0.1/tcp/8888/p2p/QmUiN4R3fNrCoQugGgmmb3v35neMEjKFNrsbNGVDsRHWpM
|
|
|
|
==== Starting Identify-Push Dialer on port 8889 ====
|
|
|
|
Dialer host ready!
|
|
Listening on: /ip4/127.0.0.1/tcp/8889/p2p/QmZyXwVuTaBcDeRsSkJpOpWrSt
|
|
|
|
Connecting to peer: QmUiN4R3fNrCoQugGgmmb3v35neMEjKFNrsbNGVDsRHWpM
|
|
Successfully connected to listener!
|
|
|
|
Pushing identify information to listener...
|
|
Identify push completed successfully!
|
|
|
|
Example completed successfully!
|
|
|
|
The identify-push protocol enables libp2p nodes to proactively notify their peers when their metadata changes, such as supported protocols or listening addresses. This helps maintain an up-to-date view of the network without requiring regular polling.
|
|
|
|
The full source code for these examples is below:
|
|
|
|
Basic example:
|
|
|
|
.. literalinclude:: ../examples/identify_push/identify_push_demo.py
|
|
:language: python
|
|
:linenos:
|
|
|
|
Listener/Dialer example:
|
|
|
|
.. literalinclude:: ../examples/identify_push/identify_push_listener_dialer.py
|
|
:language: python
|
|
:linenos:
|