mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-01-04 23:13:09 +00:00
* replaces uint with MembeshipIndex type * fixes rln relay mem index config message * adds rln relay setup proc * decouples relay and rln-relay * uses MemIndexType instead of uint * brings back the rlnRelayEnabled flag to mountRlnRelay * deletes commented codes * adds rln relay topic validator inside updates rln relay mounting procedure * adds rln-relay-pubsub-topic cli option * adds a static rln-relay topic * deletes rlnrelayEnabled argument * adds pubsub topic for rln-relay * deletes static pubsub topic * mounts relay before rlnrelay in the tests * logs rln relay pubsub topic * cleans up the code * edits rlnrelay setup * uninitializes the input parameter of rlnrelay setup * adds comments * removes unused comments * compiles addRLNRelayValidtor when RLN compilation flag is set * adds comment about topic validator * minor * mode modifications on the description of add validator * Checks whether rln relay pubsub topic is within the supported topics of relay protocol * minor * addresses comments membeshipindex to membershipindex, adds default value for rln topic adds missing return
45 lines
1.4 KiB
Nim
45 lines
1.4 KiB
Nim
## Here's a basic example of how you would start a Waku node, subscribe to
|
|
## topics, and publish to them.
|
|
|
|
import
|
|
std/[os,options],
|
|
confutils, chronicles, chronos,
|
|
stew/shims/net as stewNet,
|
|
libp2p/crypto/[crypto,secp],
|
|
eth/keys,
|
|
json_rpc/[rpcclient, rpcserver],
|
|
../../waku/v2/node/[config, wakunode2],
|
|
../../waku/common/utils/nat,
|
|
../../waku/v2/protocol/waku_message
|
|
|
|
# Node operations happens asynchronously
|
|
proc runBackground() {.async.} =
|
|
let
|
|
conf = WakuNodeConf.load()
|
|
(extIp, extTcpPort, extUdpPort) = setupNat(conf.nat, clientId,
|
|
Port(uint16(conf.tcpPort) + conf.portsShift),
|
|
Port(uint16(conf.udpPort) + conf.portsShift))
|
|
node = WakuNode.new(conf.nodeKey, conf.listenAddress,
|
|
Port(uint16(conf.tcpPort) + conf.portsShift), extIp, extTcpPort)
|
|
|
|
await node.start()
|
|
node.mountRelay()
|
|
|
|
# Subscribe to a topic
|
|
let topic = cast[Topic]("foobar")
|
|
proc handler(topic: Topic, data: seq[byte]) {.async, gcsafe.} =
|
|
let message = WakuMessage.init(data).value
|
|
let payload = cast[string](message.payload)
|
|
info "Hit subscribe handler", topic=topic, payload=payload, contentTopic=message.contentTopic
|
|
node.subscribe(topic, handler)
|
|
|
|
# Publish to a topic
|
|
let payload = cast[seq[byte]]("hello world")
|
|
let message = WakuMessage(payload: payload, contentTopic: ContentTopic("/waku/2/default-content/proto"))
|
|
await node.publish(topic, message)
|
|
|
|
# TODO Await with try/except here
|
|
discard runBackground()
|
|
|
|
runForever()
|