Проблемы с гиперссылкой проекта dat в браузере с webrtc и signalhub
Я пытаюсь использовать hyperdb в браузере с роем через webrtc и signalhub. Код довольно прост, но есть некоторая проблема с репликацией HyperDB, когда соединение прерывается из-за проверки SameKey в HyperCore. Итак, я думаю... Я не правильно манипулирую своими ключами обнаружения и ключами идентификатора, чтобы коллеги знали, что они должны быть синхронизированы. Вот пример кода, он немного запутан, но соответствующие биты - это инициализация гипер-базы данных и материал webrtc/signalhub (я думаю) ... ключ в верхней части - это ключ обнаружения другого партнера:
const crypto = require('crypto'),
sha = crypto.createHash('sha1'),
hyperdb = require('hyperdb'),
hyperdiscovery = require('hyperdiscovery'),
cms = require('random-access-idb')('cms'),
webrtc = require('webrtc-swarm'),
signalhub = require('signalhub'),
hyperdrive = require('hyperdrive'),
pump = require('pump');
// Discovery key of other peer/signalhub channel
var key = "cbffda913dabfe73cbd45f64466ffda845383965e66b2aef5f3b716ee6c06528";
const db = hyperdb(filename => {
return cms(filename);
}, { valueEncoding: 'utf-8' });
var DEFAULT_SIGNALHUBS = 'https://signalhub-jccqtwhdwc.now.sh';
db.on('ready', function () {
const swarm = webrtc(signalhub(key, DEFAULT_SIGNALHUBS));
swarm.on('peer', function (conn) {
console.log("PEER!!!!!!!");
const peer = db.replicate({
upload: true,
download: true
});
pump(conn, peer, conn)
});
});
1 ответ
Я приведу рабочий пример здесь: https://github.com/joehand/hyperdb-web-example/blob/master/index.js
Я думаю, что вы получаете эту ошибку, потому что вы не инициализируете БД с ключом:
var db = hyperdb(storage, key)
Как только вы это сделаете, вы можете получить ключ обнаружения. Как правило, вам не нужно копировать ключ обнаружения, потому что он всегда генерируется из открытого ключа.
Если это не сработает, пожалуйста, включите только соответствующий код или минимальный пример, чтобы его было легче отлаживать =). Спасибо!