mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-11-14 12:15:18 +00:00
67 lines
1.9 KiB
Markdown
67 lines
1.9 KiB
Markdown
|
# go-libp2p-gostream
|
||
|
|
||
|
[![Build Status](https://travis-ci.org/libp2p/go-libp2p-gostream.svg?branch=master)](https://travis-ci.org/libp2p/go-libp2p-gostream)
|
||
|
[![codecov](https://codecov.io/gh/libp2p/go-libp2p-gostream/branch/master/graph/badge.svg)](https://codecov.io/gh/libp2p/go-libp2p-gostream)
|
||
|
[![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-green.svg)](https://github.com/RichardLitt/standard-readme)
|
||
|
|
||
|
|
||
|
> Go "net" wrappers for libp2p
|
||
|
|
||
|
Package `gostream` allows to replace the standard net stack in Go with
|
||
|
[LibP2P](https://github.com/libp2p/libp2p) streams.
|
||
|
|
||
|
Given a libp2p.Host, `gostream` provides Dial() and Listen() methods which
|
||
|
return implementations of net.Conn and net.Listener.
|
||
|
|
||
|
Instead of the regular "host:port" addressing, `gostream` uses a Peer ID, and
|
||
|
rather than a raw TCP connection, gostream will use libp2p's net.Stream. This
|
||
|
means your connections will take advantage of libp2p's multi-routes, NAT
|
||
|
traversal, and stream multiplexing.
|
||
|
|
||
|
## Table of Contents
|
||
|
|
||
|
- [Install](#install)
|
||
|
- [Usage](#usage)
|
||
|
- [Contribute](#contribute)
|
||
|
- [License](#license)
|
||
|
|
||
|
## Install
|
||
|
|
||
|
This package is a library that uses Go modules for depedency management.
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
Documentation can be read at
|
||
|
[Godoc](https://godoc.org/github.com/libp2p/go-libp2p-gostream). The
|
||
|
important bits follow.
|
||
|
|
||
|
A simple communication between peers -one acting as server and the other as
|
||
|
client- would work like:
|
||
|
|
||
|
```go
|
||
|
go func() {
|
||
|
listener, _ := Listen(srvHost, tag)
|
||
|
defer listener.Close()
|
||
|
servConn, _ := listener.Accept()
|
||
|
defer servConn.Close()
|
||
|
reader := bufio.NewReader(servConn)
|
||
|
msg, _ := reader.ReadString('\n')
|
||
|
fmt.Println(msg)
|
||
|
servConn.Write([]byte("answer!\n"))
|
||
|
}()
|
||
|
clientConn, _ := Dial(context.Background(), clientHost, srvHost.ID(), tag)
|
||
|
clientConn.Write([]byte("question?\n"))
|
||
|
resp, _ := ioutil.ReadAll(clientConn)
|
||
|
fmt.Println(resp)
|
||
|
```
|
||
|
|
||
|
Note error handling above is ommited.
|
||
|
|
||
|
## Contribute
|
||
|
|
||
|
PRs accepted.
|
||
|
|
||
|
## License
|
||
|
|
||
|
MIT © Protocol Labs, Inc.
|