Categorygithub.com/cheebo/go-libp2pexamplesprotocol-multiplexing-with-multicodecs
package
5.0.21+incompatible
Repository: https://github.com/cheebo/go-libp2p.git
Documentation: pkg.go.dev

# README

Protocol Multiplexing using multicodecs with libp2p

This examples shows how to use multicodecs (i.e. json) to encode and transmit information between LibP2P hosts using LibP2P Streams.

Multicodecs present a common interface, making it very easy to swap the codec implementation if needed.

This example expects that you area already familiar with the echo example.

Build

From go-libp2p base folder:

> make deps-protocol-muxing
> go build -o multicodecs ./examples/protocol-multiplexing-with-multicodecs

Usage

> ./multicodecs

Details

The example creates two LibP2P Hosts. Host1 opens a stream to Host2. Host2 has an StreamHandler to deal with the incoming stream. This is covered in the echo example.

Both hosts simulate a conversation. But rather than sending raw messages on the stream, each message in the conversation is encoded under a json object (using the json multicodec). For example:

{
  "Msg": "This is the message",
  "Index": 3,
  "HangUp": false
}

The stream lasts until one of the sides closes it when the HangUp field is true.

# Functions

wrapStream takes a stream and complements it with r/w bufios and decoder/encoder.

# Structs

Message is a serializable/encodable object that we will send on a Stream.
streamWrap wraps a libp2p stream.