go-nwaku/nwaku.go

57 lines
1.4 KiB
Go
Raw Normal View History

2021-06-10 10:30:51 +00:00
package main
import (
"context"
"fmt"
"log"
2021-06-10 10:30:51 +00:00
"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)
2021-06-10 10:30:51 +00:00
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")
var defaultTopic = "/waku/2/default-waku/proto"
var contentTopic = "/toy-chat/2/huilong/proto"
2021-06-10 10:30:51 +00:00
// Get node info
var wakuInfo = nwaku.GetWakuDebugInfo(client)
fmt.Println("WakuInfo ListenStr", wakuInfo.ListenStr)
// Query messages
2021-06-10 11:46:27 +00:00
var storeResponse, _ = nwaku.GetWakuStoreMessages(client, contentTopic)
2021-06-10 10:30:51 +00:00
fmt.Println("Fetched", len(storeResponse.Messages), "messages")
// Subscribe
var res, _ = nwaku.PostWakuRelaySubscriptions(client, []string{defaultTopic})
fmt.Println("Subscribe", res)
2021-06-10 10:30:51 +00:00
// Publish
var message = nwaku.WakuRelayMessage{Payload: "0x1a2b3c4d5e6f", ContentTopic: contentTopic}
var res2, _ = nwaku.PostWakuRelayMessage(client, message)
fmt.Println("Publish", res2)
// Get messages
var wakuMessages, _ = nwaku.GetWakuRelayMessages(client, defaultTopic)
fmt.Println("Get messages", wakuMessages)
<-nodeStopped
log.Printf("exiting main")
2021-06-10 10:30:51 +00:00
}