OverviewFilesCommitsIssuesDocsReleasesPeers

hyperswarm-peer / integration / test_js_announce.js

29 lines · javascript ref:
// JS announce helper: announces a topic on a running testnet,
// stays alive for 40s so a C++ peer can discover it.
import HyperDHT from 'hyperdht'
import crypto from 'crypto'
import { writeFileSync, readFileSync } from 'fs'

const bstr = readFileSync('/tmp/layer_bootstrap.txt', 'utf8').trim()
const bs = bstr.split(',').map(s => {
  const [host, port] = s.split(':')
  return { host, port: parseInt(port) }
})
const topic = crypto.createHash('sha256').update('test-p2p-layer2').digest()

const dht = new HyperDHT({ bootstrap: bs, firewalled: false })
await dht.fullyBootstrapped()
const kp = HyperDHT.keyPair()
console.log('JS pk:', kp.publicKey.toString('hex').slice(0, 16))
writeFileSync('/tmp/test_dht_js_pk.txt', kp.publicKey.toString('hex'))

const srv = dht.createServer()
await srv.listen(kp)
await dht.announce(topic, kp).finished()
console.log('JS announced, staying alive 40s')
writeFileSync('/tmp/test_js_announce_ready.txt', 'ready')

await new Promise(r => setTimeout(r, 40000))
await srv.close()
await dht.destroy()