#p2p #ping #networking

已删除 tentacle-ping

tentacle 的 ping 协议实现

0.3.9 2019年11月28日
0.3.8 2019年10月23日
0.3.7 2019年9月23日
0.3.5 2019年5月23日
0.1.0 2019年3月1日

#33 in #libp2p

每月 31 次下载

MIT 许可协议

80KB
2K SLoC

Tentacle

Build Status image

概述

这是一个基于 yamux 的最小化多路复用 p2p 网络实现,支持挂载自定义协议。

架构

  1. 数据流传输
+----+      +----------------+      +-----------+      +-------------+      +----------+      +------+
|user| <--> | custom streams | <--> |Yamux frame| <--> |Secure stream| <--> |TCP stream| <--> |remote|
+----+      +----------------+      +-----------+      +-------------+      +----------+      +------+
  1. 代码实现

所有数据都通过 futures 通道传递,yamux 将实际的 TCP/websocket 流拆分成多个子流,服务层将 yamux 子流包装成协议流。

详细介绍:中文/English

注意:与 libp2p 不兼容。

状态

此项目的 API 基本可用。但我们还需要更多的测试。PR 欢迎提交。

目录 protocols/ 中的代码不再维护,仅作为参考使用

用法

从 cargo

[dependencies]
tentacle = { version = "0.4.0" }

示例

  1. 克隆
$ git clone https://github.com/nervosnetwork/tentacle.git
  1. 在一个终端上

监听于 127.0.0.1:1337

$ RUST_LOG=simple=info,tentacle=debug cargo run --example simple --features ws -- server
  1. 在另一个终端上
$ RUST_LOG=simple=info,tentacle=debug cargo run --example simple
  1. 现在你可以在终端上看到一些数据交互信息。

你可以在这三个仓库中看到更详细的示例

在浏览器上运行并测试

  1. 设置 ws 服务器
$ cd tentacle && RUST_LOG=info cargo run --example simple --features ws -- server
  1. 设置浏览器客户端
$ cd simple_wasm/www && wasm-pack build
$ npm install && npm run start

所有 wasm 代码来自 这本书

  1. 使用浏览器访问 https://127.0.0.1:8080/

  2. 现在你可以在服务器工作台或浏览器控制台看到连接

其他语言

其他语言的实现

为什么?

因为我使用 rust-libp2p 时遇到了一些困难的问题,难以确定是我的问题还是库本身的问题,最好是自行实现。

依赖项

~20MB
~467K SLoC