From bf120c1348d3e2f3b267587634adb126cd25cf46 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Tue, 20 Dec 2022 15:34:53 -0300 Subject: [PATCH] relay examples on README. --- README.md | 86 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 71 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 018db64..c96ccf2 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,13 @@ let pk = getPublicKey(sk) # `pk` is a hex string ### Creating, signing and verifying events ```js -const { +import { validateEvent, verifySignature, signEvent, getEventHash, getPublicKey -} = require('./cjs') +} from 'nostr-tools' let event = { kind: 1, @@ -39,27 +39,83 @@ let ok = validateEvent(event) let veryOk = await verifySignature(event) ``` -### Validating events received from relays +### Interacting with a relay ```js -const {matchFilters} = require('./cjs') +import { + relayInit, + generatePrivateKey, + getPublicKey, + getEventHash, + signEvent +} from 'nostr-tools' -let event = {kind: 1, pubkey: 'abcdef...', ...otherProperties} -let ok = matchFilters( - [ - { - kinds: [0, 1, 3, 6], - authors: ['abcdef...', '123456...'] - } - ], - event -) +const relay = relayInit('wss://relay.example.com') +relay.connect() + +relay.on('connect', () => { + console.log(`connected to ${relay.url}`) +}) +relay.on('error', () => { + console.log(`failed to connect to ${relay.url}`) +}) + +// let's query for an event that exists +let sub = relay.sub([ + { + ids: ['d7dd5eb3ab747e16f8d0212d53032ea2a7cadef53837e5a6c66d42849fcb9027'] + } +]) +sub.on('event', event => { + console.log('we got the event we wanted:', event) +}) +sub.on('eose', () => { + sub.unsub() +}) + +// let's publish a new event while simultaneously monitoring the relay for it +let sk = generatePrivateKey() +let pk = getPublicKey(sk) + +let sub = relay.sub([ + { + kinds: [1], + authors: [pk] + } +]) + +sub.on('event', event => { + console.log('got event:', event) +}) + +let event = { + kind: 1, + pubkey: pk, + created_at: Math.floor(Date.now() / 1000), + tags: [], + content: 'hello world' +} +event.id = getEventHash(event) +event.sig = await signEvent(event, sk) + +let pub = relay.publish(event) +pub.on('ok', () => { + console.log(`{relay.url} has accepted our event`) +}) +pub.on('seen', () => { + console.log(`we saw the event on {relay.url}`) +}) +pub.on('failed', reason => { + console.log(`failed to publish to {relay.url}: ${reason}`) +}) + +await relay.close() ``` ### Encrypting and decrypting direct messages ```js -const {nip04, getPublicKey, generatePrivateKey} = require('./cjs') +import {nip04, getPublicKey, generatePrivateKey} from 'nostr-tools' // sender let sk1 = generatePrivateKey()