@libp2p/dcutr v1.0.19
Implementation of the DCUtR Protocol
About
Direct Connection Upgrade through Relay (DCUtR) is a protocol that allows two nodes to connect to each other who would otherwise be prevented doing so due to being behind NATed connections or firewalls.
The protocol involves making a relayed connection between the two peers and using the relay to synchronise connection timings so that they dial each other at precisely the same moment.
Example
import { createLibp2p } from 'libp2p'
import { circuitRelayTransport } from 'libp2p/circuit-relay'
import { tcp } from '@libp2p/tcp'
import { identify } from '@libp2p/identify'
import { dcutr } from '@libp2p/dcutr'
const node = await createLibp2p({
transports: [
circuitRelayTransport(),
tcp()
],
services: {
identify: identify(),
dcutr: dcutr()
}
})
// QmTarget is a peer that is behind a NAT, supports TCP and has a relay
// reservation
await node.dial('/ip4/.../p2p/QmRelay/p2p-circuit/p2p/QmTarget')
// after a while the connection should automatically get upgraded to a
// direct connection (e.g. non-transient)
while (true) {
const connections = node.getConnections()
if (connections.find(conn => conn.transient === false)) {
console.info('have direct connection')
break
} else {
console.info('have relayed connection')
// wait a few seconds to see if it's succeeded yet
await new Promise((resolve) => {
setTimeout(() => resolve(), 5000)
})
}
}
Install
$ npm i @libp2p/dcutr
Browser <script>
tag
Loading this module through a script tag will make it's exports available as Libp2pDcutr
in the global namespace.
<script src="https://unpkg.com/@libp2p/dcutr/dist/index.min.js"></script>
API Docs
License
Licensed under either of
- Apache 2.0, (LICENSE-APACHE / http://www.apache.org/licenses/LICENSE-2.0)
- MIT (LICENSE-MIT / http://opensource.org/licenses/MIT)
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
2 days ago
5 days ago
5 days ago
5 days ago
5 days ago
5 days ago
5 days ago
10 days ago
11 days ago
11 days ago
11 days ago
12 days ago
12 days ago
12 days ago
16 days ago
16 days ago
17 days ago
18 days ago
18 days ago
18 days ago
19 days ago
20 days ago
20 days ago
26 days ago
26 days ago
27 days ago
27 days ago
1 month ago
30 days ago
30 days ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago