All Projects → driftluo → Tentacle

driftluo / Tentacle

Licence: mit
A multiplexed p2p network framework that supports custom protocols

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Tentacle

Py Ipv8
Python implementation of the IPv8 layer
Stars: ✭ 157 (+4.67%)
Mutual labels:  framework, p2p
Custom Pod Autoscaler
Custom Pod Autoscaler base, allows creation of Custom Pod Autoscalers
Stars: ✭ 148 (-1.33%)
Mutual labels:  framework
Miniphp
A small, simple PHP MVC framework skeleton that encapsulates a lot of features surrounded with powerful security layers.
Stars: ✭ 144 (-4%)
Mutual labels:  framework
Wireframe
minimal wireframing css-framework 🎈
Stars: ✭ 146 (-2.67%)
Mutual labels:  framework
Buymeacoffee
Buy Me a Coffee framework for iOS
Stars: ✭ 145 (-3.33%)
Mutual labels:  framework
Eventflow
Async/await first CQRS+ES and DDD framework for .NET
Stars: ✭ 1,932 (+1188%)
Mutual labels:  framework
Spring Oxygen
🦄 Spring rapid development integration framework.
Stars: ✭ 145 (-3.33%)
Mutual labels:  framework
Core
CatLib lightweight dependency injection container
Stars: ✭ 148 (-1.33%)
Mutual labels:  framework
Lazy
Kule Lazy4 / CSS Framework
Stars: ✭ 147 (-2%)
Mutual labels:  framework
Siris
DEPRECATED: The community driven fork of Iris. The fastest web framework for Golang!
Stars: ✭ 146 (-2.67%)
Mutual labels:  framework
Roperator
Experimental Kubernetes Operator kit written in Rust
Stars: ✭ 146 (-2.67%)
Mutual labels:  rust-library
Knockout Spa
A mini but full-fledged SPA framework and boilerplate to build SPAs fast and scalable
Stars: ✭ 145 (-3.33%)
Mutual labels:  framework
Codestar Framework
A Simple and Lightweight WordPress Option Framework for Themes and Plugins
Stars: ✭ 147 (-2%)
Mutual labels:  framework
Bodywork Core
Deploy machine learning projects developed in Python, to Kubernetes. Accelerated MLOps 🚀
Stars: ✭ 145 (-3.33%)
Mutual labels:  framework
Customstage
A JavaFX UI framework to create fully customized undecorated windows
Stars: ✭ 148 (-1.33%)
Mutual labels:  framework
Wt Tracker
High-performance WebTorrent tracker
Stars: ✭ 144 (-4%)
Mutual labels:  p2p
Mldonkey
cross-platform multi-network p2p daemon
Stars: ✭ 145 (-3.33%)
Mutual labels:  p2p
Skyve
Skyve is an open-source low-code platform that gives you access to all of the key capabilities needed to build sophisticated, robust and scalable cloud solutions.
Stars: ✭ 145 (-3.33%)
Mutual labels:  framework
Carry
ClojureScript application framework.
Stars: ✭ 149 (-0.67%)
Mutual labels:  framework
Sm
🚀 SM – a static State Machine library
Stars: ✭ 149 (-0.67%)
Mutual labels:  rust-library

Tentacle

Build Status image

Overview

This is a minimal implementation for a multiplexed p2p network based on yamux that supports mounting custom protocols.

Architecture

  1. Data stream transmission
+----+      +----------------+      +-----------+      +-------------+      +----------+      +------+
|user| <--> | custom streams | <--> |Yamux frame| <--> |Secure stream| <--> |TCP stream| <--> |remote|
+----+      +----------------+      +-----------+      +-------------+      +----------+      +------+
  1. Code implementation

All data is passed through the futures channel, yamux splits the actual tcp/websocket stream into multiple substreams, and the service layer wraps the yamux substream into a protocol stream.

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.

The codes in the protocols/ directory are no longer maintained and only used as reference

Feature flatc is not recommended and will be removed in the next version.

Usage

From cargo

[dependencies]
tentacle = { version = "0.3", features = ["molc"] }

Example

  1. Clone
$ git clone https://github.com/nervosnetwork/tentacle.git
  1. On one terminal:

Listen on 127.0.0.1:1337

$ RUST_LOG=simple=info,tentacle=debug cargo run --example simple --features molc,ws -- server
  1. On another terminal:
$ RUST_LOG=simple=info,tentacle=debug cargo run --example simple --features molc
  1. Now you can see some data interaction information on the terminal.

You can see more detailed example in these three repos:

Run on browser and test

  1. setup a ws server:
$ cd tentacle && RUST_LOG=info cargo run --example simple --features molc,ws -- server
  1. setup a browser client
$ cd simple_wasm/www && wasm-pack build
$ npm install && npm run start

all wasm code generate from book

  1. Use a browser to visit http://localhost:8080/

  2. Now you can see the connection on the server workbench or on browser's console

Other Languages

Implementations in other languages

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].