2021-06-10 10:30:51 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"fmt"
|
2021-06-10 10:48:18 +00:00
|
|
|
"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...")
|
2021-06-10 10:34:29 +00:00
|
|
|
|
2021-06-10 10:48:18 +00:00
|
|
|
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
|
2021-06-10 10:34:29 +00:00
|
|
|
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")
|
|
|
|
|
|
|
|
// Get node info
|
|
|
|
var wakuInfo = nwaku.GetWakuDebugInfo(client)
|
|
|
|
fmt.Println("WakuInfo ListenStr", wakuInfo.ListenStr)
|
|
|
|
|
|
|
|
// Query messages
|
|
|
|
var contentTopic = "/toy-chat/2/huilong/proto"
|
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")
|
|
|
|
|
|
|
|
// Publish
|
|
|
|
var message = nwaku.WakuRelayMessage{Payload: "0x1a2b3c4d5e6f", ContentTopic: contentTopic}
|
2021-06-10 12:34:39 +00:00
|
|
|
var res, _ = nwaku.PostWakuRelayMessage(client, message)
|
2021-06-10 10:30:51 +00:00
|
|
|
fmt.Println("Publish", res)
|
2021-06-10 10:48:18 +00:00
|
|
|
|
|
|
|
<-nodeStopped
|
|
|
|
log.Printf("exiting main")
|
2021-06-10 10:30:51 +00:00
|
|
|
}
|