go-nwaku/nwaku.go

47 lines
1.1 KiB
Go

package main
import (
"context"
"fmt"
"log"
"time"
"github.com/ethereum/go-ethereum/rpc"
"github.com/status-im/go-nwaku/nwaku"
)
func main() {
fmt.Println("Starting node...")
nodeStopped := make(chan bool, 1)
// TODO Doesn't seem like SIGINT hook is hit here
go nwaku.StartNode(nodeStopped)
// NOTE: RPC server needs time to start, this can be improved
time.Sleep(2 * time.Second)
fmt.Println("JSON RPC request...")
_, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
// Assumes node started
client, _ := rpc.Dial("http://127.0.0.1:8545")
// Get node info
var wakuInfo = nwaku.GetWakuDebugInfo(client)
fmt.Println("WakuInfo ListenStr", wakuInfo.ListenStr)
// Query messages
var contentTopic = "/toy-chat/2/huilong/proto"
var storeResponse, _ = nwaku.GetWakuStoreMessages(client, contentTopic)
fmt.Println("Fetched", len(storeResponse.Messages), "messages")
// Publish
var message = nwaku.WakuRelayMessage{Payload: "0x1a2b3c4d5e6f", ContentTopic: contentTopic}
var res, _ = nwaku.PostWakuRelayMessage(client, message)
fmt.Println("Publish", res)
<-nodeStopped
log.Printf("exiting main")
}