Skip to content

Instantly share code, notes, and snippets.

@sbilly
Created December 2, 2020 00:28
Show Gist options
  • Save sbilly/d14b1e411bf6e21e6c1b2a3924f652bf to your computer and use it in GitHub Desktop.
Save sbilly/d14b1e411bf6e21e6c1b2a3924f652bf to your computer and use it in GitHub Desktop.
nnet basic example.

run seed in a vm with public internet ip address.

# go run seed.go
2020/12/01 16:25:11 [119 42 39 175 216 103 81 128 232 108 136 240 198 14 94 8 233 51 80 60 186 249 108 87 28 181 134 16 75 78 216 212]
2020/12/01 16:25:11 nnet: {tcp [tcp kcp] SOME_REMOTE_ADDR 23333 32 8 smux 8 32 23333 23333 1 [BROADCAST_PUSH] 5m0s 10s 2333 2333 [BROADCAST_PUSH] 5m0s 10s 20971520 5s 1s 5s 20s 5s 23333 8 3 2 2s}

run peer in my laptop.

# go run peer.go
2020/12/02 08:17:16 id: [163 45 97 232 127 118 238 34 253 54 242 96 120 114 175 75 26 233 40 149 79 93 50 161 202 2 78 235 63 210 218 117]
2020/12/02 08:17:16 nnet: {tcp [tcp kcp] SOME_REMOTE_ADDR 23333 32 8 smux 8 32 23333 23333 1 [BROADCAST_PUSH] 5m0s 10s 2333 2333 [BROADCAST_PUSH] 5m0s 10s 20971520 5s 1s 5s 20s 5s 23333 8 3 2 2s}
2020/12/02 08:17:16 Remote node connect from 127.0.0.1:53637 to local address 127.0.0.1:23333
2020/12/02 08:17:16 Join
2020/12/02 08:17:16 Remote node <127.0.0.1:53637> stops because of error: Chord node is not ready yet
2020/12/02 08:17:16 Remote node <127.0.0.1:23333> stops because of error: Node addr tcp://:23333 is different from expected value tcp://SOME_REMOTE_ADDR:23333
2020/12/02 08:17:16 Handle remote message error: Node addr tcp://:23333 is different from expected value tcp://SOME_REMOTE_ADDR:23333
2020/12/02 08:17:16 Received stop message from remote node <127.0.0.1:23333>
2020/12/02 08:17:16 Received stop message from remote node <127.0.0.1:53637>

// This example shows how to send and receive arbitrary byte messages.
// Run with default options: go run main.go
// Show usage: go run main.go -h
package main
import (
"time"
"github.com/nknorg/nnet"
"github.com/nknorg/nnet/log"
"github.com/nknorg/nnet/util"
)
// create 创建 nnet 对象
func create(transport string, port uint16, id []byte) (*nnet.NNet, error) {
conf := &nnet.Config{
Hostname: "SOME_REMOTE_ADDR", // replaced
Port: port,
Transport: transport,
}
nn, err := nnet.NewNNet(id, conf)
if err != nil {
return nil, err
}
return nn, nil
}
func main() {
transportPtr := "tcp" // or "kcp"
const createPort uint16 = 23333
var nn *nnet.NNet
var id []byte
var err error
id, err = util.RandBytes(32)
if err != nil {
log.Error(err)
return
}
log.Info("id:", id)
nn, err = create(transportPtr, createPort, id)
if err != nil {
log.Error(err)
return
}
log.Info("nnet:", *nn.GetConfig())
time.Sleep(112358 * time.Microsecond)
err = nn.Start(false) // 启动 nnet 节点,但不创建网络而是加入网络
if err != nil {
log.Error(err)
return
}
err = nn.Join("tcp://SOME_REMOTE_ADDR:23333") // 加入网络
if err != nil {
log.Error(err)
return
}
log.Info("Join")
select {}
}
// This example shows how to send and receive arbitrary byte messages.
// Run with default options: go run main.go
// Show usage: go run main.go -h
package main
import (
"time"
"github.com/nknorg/nnet"
"github.com/nknorg/nnet/log"
"github.com/nknorg/nnet/util"
)
// create 创建 nnet 对象
func create(transport string, port uint16, id []byte) (*nnet.NNet, error) {
conf := &nnet.Config{
Port: port,
Hostname: "SOME_REMOTE_ADDR",
Transport: transport,
}
nn, err := nnet.NewNNet(id, conf)
if err != nil {
return nil, err
}
return nn, nil
}
func main() {
transportPtr := "tcp" // or "kcp"
const createPort uint16 = 23333
var nn *nnet.NNet
var id []byte
var err error
id, err = util.RandBytes(32)
if err != nil {
log.Error(err)
return
}
log.Info(id)
nn, err = create(transportPtr, createPort, id)
if err != nil {
log.Error(err)
return
}
log.Info(*nn)
time.Sleep(112358 * time.Microsecond)
err = nn.Start(true) // 启动 nnet 节点
if err != nil {
log.Error(err)
return
}
select {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment