37 lines
1.2 KiB
Nim
37 lines
1.2 KiB
Nim
|
import asyncdispatch2, nimcrypto, strutils, os
|
||
|
import ../libp2p/daemon/daemonapi, ../libp2p/[base58, multiaddress]
|
||
|
|
||
|
proc main(bn: string) {.async.} =
|
||
|
echo "= Starting P2P node"
|
||
|
var bootnodes = bn.split(",")
|
||
|
var api = await newDaemonApi({DHTFull, PSGossipSub, WaitBootstrap},
|
||
|
bootstrapNodes = bootnodes,
|
||
|
peersRequired = 1)
|
||
|
var id = await api.identity()
|
||
|
echo "= P2P node ", Base58.encode(id.peer), " started:"
|
||
|
for item in id.addresses:
|
||
|
echo item
|
||
|
|
||
|
proc pubsubLogger(api: DaemonAPI,
|
||
|
ticket: PubsubTicket,
|
||
|
message: PubSubMessage): Future[bool] {.async.} =
|
||
|
let bpeer = Base58.encode(message.peer)
|
||
|
let msglen = len(message.data)
|
||
|
echo "= Recieved pubsub message wit length ", msglen,
|
||
|
" bytes from peer ", bpeer
|
||
|
result = true
|
||
|
|
||
|
var ticket = await api.pubsubSubscribe("test-net", pubsubLogger)
|
||
|
|
||
|
var data = "HELLO\r\n"
|
||
|
var msgData = cast[seq[byte]](data)
|
||
|
await api.pubsubPublish("test-net", msgData)
|
||
|
|
||
|
when isMainModule:
|
||
|
if paramCount() != 1:
|
||
|
echo "Please supply bootnodes!"
|
||
|
else:
|
||
|
waitFor(main(paramStr(1)))
|
||
|
while true:
|
||
|
poll()
|