relay examples on README.

This commit is contained in:
fiatjaf 2022-12-20 15:34:53 -03:00
parent 3630d377e5
commit bf120c1348
No known key found for this signature in database
GPG Key ID: BAD43C4BE5C1A3A1
1 changed files with 71 additions and 15 deletions

View File

@ -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()