libp2p / js-libp2p-rendezvous

A javascript implementation of the rendezvous protocol for libp2p
12 stars 5 forks source link

Add documentation / examples #11

Closed binarybaron closed 3 years ago

binarybaron commented 3 years ago

I would like to to use your library to connect to a rendezvous point and retrieve peers from a namespace. Can you give me simple example on how I would be able to do that?

vasco-santos commented 3 years ago

Thanks for reaching out and apologies for the state of this implementation not being clear in the README. I updated the README to clarify this.

This module has a candidate implementation in a PR, but it still needs to be tested and finished. This will be picked up again once it is a priority per https://github.com/protocol/web3-dev-team/pull/67

vasco-santos commented 3 years ago

For now, I would recommend you rely on a pubsub mechanism for your needs. You can see a setup for this in https://github.com/libp2p/js-libp2p/tree/master/examples/discovery-mechanisms#3-pubsub-based-peer-discovery

binarybaron commented 3 years ago

Thanks for the quick reply! Just to clarify, the rendezvous node I need to connect to follows the Rendezvous Spec and is written in Rust. I don't think I can use the detection mechanism you quoted above. Is that correct?

vasco-santos commented 3 years ago

Oh, you want a rendezvous client, and not this (this module is a Rendezvous Server).

That is/was kind of blocked on not being a priority: https://github.com/libp2p/js-libp2p/pull/856

But, with other languages implementing the Server, it will be easy to get it in without having the JS Server ready

vasco-santos commented 3 years ago

In the meantime, you can try to get libp2p#856 updated with master and try to get it running.

Note: There is also a WIP example that showcases how it would work: https://github.com/libp2p/js-libp2p/pull/862

binarybaron commented 3 years ago

Sorry, for bothering you again but I'm unable to install the branch via npm because I get typescript errors.

npm install git://github.com/binarybaron/js-libp2p.git#feat/rendezvous-client --save
npm ERR! prepareGitDep 1> 
npm ERR! prepareGitDep > iso-constants@0.1.2 install /Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/iso-constants
npm ERR! prepareGitDep > node build.js > index.browser.js
npm ERR! prepareGitDep 
npm ERR! prepareGitDep 
npm ERR! prepareGitDep > bcrypto@5.4.0 install /Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/bcrypto
npm ERR! prepareGitDep > node-gyp rebuild
npm ERR! prepareGitDep 
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/aead.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/asn1.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/cipher.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/drbg.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/dsa.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/ecc.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/encoding.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/entropy/env.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/entropy/hw.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/entropy/sys.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/hash.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/ies.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/internal.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/kdf.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/mac.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/mpi.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/rand.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/rsa.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/stream.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/torsion/deps/torsion/src/util.o
npm ERR! prepareGitDep   LIBTOOL-STATIC Release/torsion.a
npm ERR! prepareGitDep   CC(target) Release/obj.target/secp256k1/deps/secp256k1/contrib/lax_der_parsing.o
npm ERR! prepareGitDep   CC(target) Release/obj.target/secp256k1/deps/secp256k1/src/secp256k1.o
npm ERR! prepareGitDep   LIBTOOL-STATIC Release/secp256k1.a
npm ERR! prepareGitDep   CC(target) Release/obj.target/bcrypto/src/bcrypto.o
npm ERR! prepareGitDep   SOLINK_MODULE(target) Release/bcrypto.node
npm ERR! prepareGitDep 
npm ERR! prepareGitDep > secp256k1@4.0.2 install /Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/secp256k1
npm ERR! prepareGitDep > node-gyp-build || exit 0
npm ERR! prepareGitDep 
npm ERR! prepareGitDep 
npm ERR! prepareGitDep > ursa-optional@0.10.2 install /Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/ursa-optional
npm ERR! prepareGitDep > node rebuild.js
npm ERR! prepareGitDep 
npm ERR! prepareGitDep 
npm ERR! prepareGitDep > playwright-core@1.10.0 install /Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/playwright-core
npm ERR! prepareGitDep > node install.js
npm ERR! prepareGitDep 
npm ERR! prepareGitDep 
npm ERR! prepareGitDep > core-js@3.15.2 postinstall /Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/core-js
npm ERR! prepareGitDep > node -e "try{require('./postinstall')}catch(e){}"
npm ERR! prepareGitDep 
npm ERR! prepareGitDep Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!
npm ERR! prepareGitDep 
npm ERR! prepareGitDep The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: 
npm ERR! prepareGitDep > https://opencollective.com/core-js 
npm ERR! prepareGitDep > https://www.patreon.com/zloirock 
npm ERR! prepareGitDep 
npm ERR! prepareGitDep Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)
npm ERR! prepareGitDep 
npm ERR! prepareGitDep 
npm ERR! prepareGitDep > esbuild@0.11.5 postinstall /Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/esbuild
npm ERR! prepareGitDep > node install.js
npm ERR! prepareGitDep 
npm ERR! prepareGitDep 
npm ERR! prepareGitDep > esbuild@0.12.15 postinstall /Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/esbuild-register/node_modules/esbuild
npm ERR! prepareGitDep > node install.js
npm ERR! prepareGitDep 
npm ERR! prepareGitDep 
npm ERR! prepareGitDep > protobufjs@6.11.2 postinstall /Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/protobufjs
npm ERR! prepareGitDep > node scripts/postinstall
npm ERR! prepareGitDep 
npm ERR! prepareGitDep 
npm ERR! prepareGitDep > libp2p@0.31.7 prepare /Users/user/.npm/_cacache/tmp/git-clone-51c623a1
npm ERR! prepareGitDep > aegir build --no-bundle
npm ERR! prepareGitDep 
npm ERR! prepareGitDep [15:36:41] Clean ./dist [started]
npm ERR! prepareGitDep [15:36:41] Clean ./dist [completed]
npm ERR! prepareGitDep [15:36:41] Generate types [started]
npm ERR! prepareGitDep src/rendezvous/index.js(12,30): error TS7016: Could not find a declaration file for module 'it-buffer'. '/Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/it-buffer/index.js' implicitly has an 'any' type.
npm ERR! prepareGitDep   Try `npm i --save-dev @types/it-buffer` if it exists or add a new declaration (.d.ts) file containing `declare module 'it-buffer';`
npm ERR! prepareGitDep src/rendezvous/index.js(125,50): error TS2345: Argument of type 'typeof import("/Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/multiaddr/dist/src/index")' is not assignable to parameter of type 'string | PeerId | Multiaddr'.
npm ERR! prepareGitDep   Type 'typeof import("/Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/multiaddr/dist/src/index")' is not assignable to type 'Multiaddr'.
npm ERR! prepareGitDep src/rendezvous/index.js(196,50): error TS2345: Argument of type 'typeof import("/Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/multiaddr/dist/src/index")' is not assignable to parameter of type 'string | PeerId | Multiaddr'.
npm ERR! prepareGitDep   Type 'typeof import("/Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/multiaddr/dist/src/index")' is not assignable to type 'Multiaddr'.
npm ERR! prepareGitDep src/rendezvous/index.js(203,16): error TS7006: Parameter 'source' implicitly has an 'any' type.
npm ERR! prepareGitDep src/rendezvous/index.js(237,38): error TS7006: Parameter 'r' implicitly has an 'any' type.
npm ERR! prepareGitDep src/rendezvous/index.js(259,50): error TS2345: Argument of type 'typeof import("/Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/multiaddr/dist/src/index")' is not assignable to parameter of type 'string | PeerId | Multiaddr'.
npm ERR! prepareGitDep   Type 'typeof import("/Users/user/.npm/_cacache/tmp/git-clone-51c623a1/node_modules/multiaddr/dist/src/index")' is missing the following properties from type 'Multiaddr': bytes, toJSON, toOptions, protos, and 15 more.
npm ERR! prepareGitDep [15:36:56] Generate types [failed]
npm ERR! prepareGitDep [15:36:56] → Command failed with exit code 1: tsc --build /Users/user/.npm/_cacache/tmp/git-clone-51c623a1/tsconfig-types.aegir.json
npm ERR! prepareGitDep 
npm ERR! prepareGitDep 2> npm WARN install Usage of the `--dev` option is deprecated. Use `--only=dev` instead.
npm ERR! prepareGitDep npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm ERR! prepareGitDep npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm ERR! prepareGitDep Command failed with exit code 1: tsc --build /Users/user/.npm/_cacache/tmp/git-clone-51c623a1/tsconfig-types.aegir.json
npm ERR! prepareGitDep npm ERR! code ELIFECYCLE
npm ERR! prepareGitDep npm ERR! errno 1
npm ERR! prepareGitDep npm ERR! libp2p@0.31.7 prepare: `aegir build --no-bundle`
npm ERR! prepareGitDep npm ERR! Exit status 1
npm ERR! prepareGitDep npm ERR! 
npm ERR! prepareGitDep npm ERR! Failed at the libp2p@0.31.7 prepare script.
npm ERR! prepareGitDep npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! prepareGitDep 
npm ERR! prepareGitDep npm ERR! A complete log of this run can be found in:
npm ERR! prepareGitDep npm ERR!     /Users/user/.npm/_logs/2021-07-08T13_36_56_820Z-debug.log
npm ERR! prepareGitDep 
npm ERR! premature close