P2P
Overview
This is a minimal implementation for a multiplexed p2p network based on yamux that supports mounting custom protocols.
Architecture
- Data stream transmission
+----+ +----------------+ +-----------+ +-------------+ +----------+ +------+
|user| <-| custom streams | <-|Yamux frame| <-|Secure stream| <-|TCP stream| <-|remote|
+----+ +----------------+ +-----------+ +-------------+ +----------+ +------+
- Code implementation
All data is passed through the futures channel, yamux splits the actual tcp stream into multiple substreams,
and the service layer wraps the yamux substream into a protocol stream.
At the same time, support for other protocol(such as websocket) is also planned, but will delay a lot.
Detailed introduction: 中文/English
Note: It is not compatible with
libp2p.
Status
The API of this project is basically usable. However we still need more tests. PR is welcome.
Usage
From cargo
[]
= "0.2"
Example
- Clone
- On one terminal:
Listen on 127.0.0.1:1337
- On another terminal:
- Now you can see some data interaction information on the terminal.
You can see more detailed example in these two repos: ckb/cita.
Why?
Because when I use rust-libp2p, I have encountered some difficult problems,
and it is difficult to locate whether it is my problem or the library itself,
it is better to implement one myself.