如何使用浏览器查找/获取 DHT 数据

问题描述

我在 node.js 中有以下工作来执行基本的 DHT putget。我稍后可以通过仅使用 get 方法并传入先前创建的 infohash 来检索相同的 DHT。我接下来想做的是在浏览器中查找该 DHT,但我在浏览器化方面没有任何成功。是否有任何用于浏览器的库可以通过查找 infohash 来读取 DHT 数据?

// Emitter
var EventEmitter = require('events').EventEmitter;
var util = require('util');
util.inherits(emitter,EventEmitter);
function emitter(){
    var self = this;
}
let e = new emitter()

//DHT
const DHT = require('bittorrent-dht')

const dht = new DHT()

let data = 'Some cool new data'

const value = Buffer.from(data,'utf8')

dht.put({ v: value },function (err,hash) {
  if(err) console.error('Error:',err)
  let arr = dht.toJSON()
  let infoHash = Object.getownPropertyNames(arr.values).toString()
  console.log(infoHash)

  e.emit('hash',infoHash)
})

e.on('hash',infoHash => {
    dht.get(infoHash,(err,res) => {
        if(err) console.log(err)
        let data = res.v.toString()
        console.log(data)
    })
})

我知道 WebTorrent 使用 bittorrent-dht,但我不太确定我将如何使用 WebTorrent 用于此目的

解决方法

bittorrent DHT 需要普通的 UDP 套接字才能工作。目前没有提供该功能的 Web API,因此无法在网页中实现。