wss multiaddress switch support

This commit is contained in:
rshiv 2021-10-06 17:30:55 +01:00
parent 50189a21a9
commit ac76e2f189
1 changed files with 24 additions and 1 deletions

View File

@ -12,6 +12,8 @@ import
libp2p/protocols/pubsub/gossipsub,
libp2p/nameresolving/dnsresolver,
libp2p/builders,
libp2p/transports/wstransport,
libp2p/multicodec,
../protocol/[waku_relay, waku_message],
../protocol/waku_store/waku_store,
../protocol/waku_swap/waku_swap,
@ -122,6 +124,9 @@ proc removeContentFilters(filters: var Filters, contentFilters: seq[ContentFilte
template tcpEndPoint(address, port): auto =
MultiAddress.init(address, tcpProtocol, port)
template addWssFlag() =
MultiAddress.init(multiCodec("ws"))
## Public API
##
@ -137,6 +142,9 @@ proc new*(T: type WakuNode, nodeKey: crypto.PrivateKey,
let
rng = crypto.newRng()
hostAddress = tcpEndPoint(bindIp, bindPort)
hostAddressWithWss = hostAddress & addWssFlag.get()
announcedAddresses = if extIp.isNone() or extPort.isNone(): @[]
else: @[tcpEndPoint(extIp.get(), extPort.get())]
peerInfo = PeerInfo.init(nodekey)
@ -148,11 +156,26 @@ proc new*(T: type WakuNode, nodeKey: crypto.PrivateKey,
info "Initializing networking", hostAddress,
announcedAddresses
#info "Initializing networking", hostAddressWithWss,
# announcedAddresses
# XXX: Add this when we create node or start it?
peerInfo.addrs.add(hostAddress) # Index 0
for multiaddr in announcedAddresses:
peerInfo.addrs.add(multiaddr) # Announced addresses in index > 0
# WSS switch builder code
let WssSwitch = SwitchBuilder
.new()
.withAddress(hostAddressWithWss)
.withRng(rng)
.withMplex()
.withTransport(proc (upgr: Upgrade): Transport = WsTransport.new(upgr))
.withNoise()
.build()
var switch = newStandardSwitch(some(nodekey), hostAddress,
transportFlags = {ServerFlags.ReuseAddr}, rng = rng)
# TODO Untested - verify behavior after switch interface change