libp2p
    Preparing search index...
    • Handle multistream protocol selections for the given list of protocols.

      Note that after a protocol is handled listener can no longer be used.

      Type Parameters

      • Stream extends Duplex<any, any, any>

      Parameters

      • stream: Stream

        A duplex iterable stream to listen on

      • protocols: string | string[]

        A list of protocols (or single protocol) that this listener is able to speak.

      • options: MultistreamSelectInit

        an options object containing an AbortSignal and an optional boolean writeBytes - if this is true, Uint8Arrays will be written into duplex, otherwise Uint8ArrayLists will

      Returns Promise<ProtocolStream<Stream>>

      A stream for the selected protocol and the protocol that was selected from the list of protocols provided to select

      import { pipe } from 'it-pipe'
      import * as mss from '@libp2p/multistream-select'
      import { Mplex } from '@libp2p/mplex'

      const muxer = new Mplex({
      async onStream (muxedStream) {
      // mss.handle(handledProtocols)
      // Returns selected stream and protocol
      const { stream, protocol } = await mss.handle(muxedStream, [
      '/ipfs-dht/1.0.0',
      '/ipfs-bitswap/1.0.0'
      ])

      // Typically here we'd call the handler function that was registered in
      // libp2p for the given protocol:
      // e.g. handlers[protocol].handler(stream)
      //
      // If protocol was /ipfs-dht/1.0.0 it might do something like this:
      // try {
      // await pipe(
      // dhtStream,
      // source => (async function * () {
      // for await (const chunk of source)
      // // Incoming DHT data -> process and yield to respond
      // })(),
      // dhtStream
      // )
      // } catch (err) {
      // // Error in stream
      // }
      }
      })