Skip to content

Latest commit

 

History

History

embedded

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

Embedded Applications

This directory contains examples of embedded applications that use webmesh as a library. For now, only Go examples are provided. However, bindings for other languages are planned.

Examples

The current example is a simple chat application between a client and server. In reality, they are both servers, however for simplicity we let the server bootstrap the network. The client then connects to the server and starts a bidirectional chat.

The example exists in two forms. One using native discovery with gRPC and the other using the libp2p Kademlia DHT.

Native Discovery

First build the binary:

go build -o chat ./mesh-chat/main.go

To run the example, you'll either need to be root, or you can use the setcap command to give the binary the following permissions:

sudo setcap cap_net_raw,cap_net_admin=eip ./chat

Then, you can run the server with just:

./chat

And the client with the join address of the server (assumed to be localhost):

./chat -join localhost:8443

Kademlia DHT

Identical to the native discovery example, except you'll need to build the binary with the mesh-chat-libp2p binary:

go build -o chat ./mesh-chat-libp2p/main.go

To run the example, you'll either need to be root, or you can use the setcap command to give the binary the following permissions:

sudo setcap cap_net_raw,cap_net_admin=eip ./chat

Then, you can run the server with just:

./chat

The server will print out a PSK that you can use to connect to it.

./chat -psk $GENERATED_PSK