A TCP transport for libp2p
A libp2p transport based on the TCP networking stack.
import { tcp } from '@libp2p/tcp'
import { multiaddr } from '@multiformats/multiaddr'
import { pipe } from 'it-pipe'
import all from 'it-all'
// A simple upgrader that just returns the MultiaddrConnection
const upgrader = {
upgradeInbound: async maConn => maConn,
upgradeOutbound: async maConn => maConn
}
const transport = tcp()()
const listener = transport.createListener({
upgrader,
handler: (socket) => {
console.log('new connection opened')
pipe(
['hello', ' ', 'World!'],
socket
)
}
})
const addr = multiaddr('/ip4/127.0.0.1/tcp/9090')
await listener.listen(addr)
console.log('listening')
const socket = await transport.dial(addr, { upgrader })
const values = await pipe(
socket,
all
)
console.log(`Value: ${values.toString()}`)
// Close connection after reading
await listener.close()
Outputs:
listening
new connection opened
Value: hello World!
$ npm i @libp2p/tcp
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)
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.