Package Exports
- libp2p-tcp
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (libp2p-tcp) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
js-libp2p-tcp
JavaScript implementation of the TCP module for libp2p. It exposes the interface-transport for dial/listen.
libp2p-tcp
is a very thin shim that adds support for dialing to amultiaddr
. This small shim will enable libp2p to use other transports.
Lead Maintainer
Table of Contents
Install
npm
> npm install libp2p-tcp
Usage
const TCP = require('libp2p-tcp')
const multiaddr = require('multiaddr')
const pipe = require('it-pipe')
const { collect } = require('streaming-iterables')
// A simple upgrader that just returns the MultiaddrConnection
const upgrader = {
upgradeInbound: maConn => maConn,
upgradeOutbound: maConn => maConn
}
const tcp = new TCP({ upgrader })
const listener = tcp.createListener((socket) => {
console.log('new connection opened')
pipe(
['hello'],
socket
)
})
const addr = multiaddr('/ip4/127.0.0.1/tcp/9090')
await listener.listen(addr)
console.log('listening')
const socket = await tcp.dial(addr)
const values = await pipe(
socket,
collect
)
console.log(`Value: ${values.toString()}`)
// Close connection after reading
await listener.close()
Outputs:
listening
new connection opened
Value: hello
API
Transport
libp2p-tcp
accepts TCP addresses as both IPFS and non IPFS encapsulated addresses, i.e:
/ip4/127.0.0.1/tcp/4001
/ip4/127.0.0.1/tcp/4001/ipfs/QmHash
(both for dialing and listening)
Connection
Contribute
Contributions are welcome! The libp2p implementation in JavaScript is a work in progress. As such, there's a few things you can do right now to help out:
- Check out the existing issues.
- Perform code reviews.
- Add tests. There can never be enough tests.
Please be aware that all interactions related to libp2p are subject to the IPFS Code of Conduct.
Small note: If editing the README, please conform to the standard-readme specification.
License
MIT © 2015-2016 David Dias