Add support for subscribe JSON RPC
- psot subscriptions - get messages
This commit is contained in:
parent
3f6a5f8dd0
commit
452d4c5304
16
nwaku.go
16
nwaku.go
|
@ -27,19 +27,29 @@ func main() {
|
|||
// 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"
|
||||
|
||||
// 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")
|
||||
|
||||
// Subscribe
|
||||
var res, _ = nwaku.PostWakuRelaySubscriptions(client, []string{defaultTopic})
|
||||
fmt.Println("Subscribe", res)
|
||||
|
||||
// Publish
|
||||
var message = nwaku.WakuRelayMessage{Payload: "0x1a2b3c4d5e6f", ContentTopic: contentTopic}
|
||||
var res, _ = nwaku.PostWakuRelayMessage(client, message)
|
||||
fmt.Println("Publish", res)
|
||||
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")
|
||||
|
|
|
@ -39,10 +39,25 @@ func PostWakuRelayMessage(client *rpc.Client, message WakuRelayMessage) (bool, e
|
|||
return res, nil
|
||||
}
|
||||
|
||||
// TODO Subscribe, then poll for getting messages
|
||||
// https://rfc.vac.dev/spec/16/#post_waku_v2_relay_v1_subscriptions
|
||||
// https://rfc.vac.dev/spec/16/#get_waku_v2_relay_v1_messages
|
||||
// For now, just use query and publish
|
||||
func PostWakuRelaySubscriptions(client *rpc.Client, topics []string) (bool, error) {
|
||||
var res bool
|
||||
|
||||
if err := client.Call(&res, "post_waku_v2_relay_v1_subscriptions", topics); err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func GetWakuRelayMessages(client *rpc.Client, topic string) ([]WakuMessage, error) {
|
||||
var res []WakuMessage
|
||||
|
||||
if err := client.Call(&res, "get_waku_v2_relay_v1_messages", topic); err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// General things that can be improved:
|
||||
// - Generalized with different transports (HTTP, IPC, WS etc), see
|
||||
|
|
Loading…
Reference in New Issue