mirror of
https://github.com/nbd-wtf/nostr-tools.git
synced 2025-12-08 16:28:49 +00:00
relay examples on README.
This commit is contained in:
86
README.md
86
README.md
@@ -16,13 +16,13 @@ let pk = getPublicKey(sk) # `pk` is a hex string
|
|||||||
### Creating, signing and verifying events
|
### Creating, signing and verifying events
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const {
|
import {
|
||||||
validateEvent,
|
validateEvent,
|
||||||
verifySignature,
|
verifySignature,
|
||||||
signEvent,
|
signEvent,
|
||||||
getEventHash,
|
getEventHash,
|
||||||
getPublicKey
|
getPublicKey
|
||||||
} = require('./cjs')
|
} from 'nostr-tools'
|
||||||
|
|
||||||
let event = {
|
let event = {
|
||||||
kind: 1,
|
kind: 1,
|
||||||
@@ -39,27 +39,83 @@ let ok = validateEvent(event)
|
|||||||
let veryOk = await verifySignature(event)
|
let veryOk = await verifySignature(event)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Validating events received from relays
|
### Interacting with a relay
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const {matchFilters} = require('./cjs')
|
import {
|
||||||
|
relayInit,
|
||||||
|
generatePrivateKey,
|
||||||
|
getPublicKey,
|
||||||
|
getEventHash,
|
||||||
|
signEvent
|
||||||
|
} from 'nostr-tools'
|
||||||
|
|
||||||
let event = {kind: 1, pubkey: 'abcdef...', ...otherProperties}
|
const relay = relayInit('wss://relay.example.com')
|
||||||
let ok = matchFilters(
|
relay.connect()
|
||||||
[
|
|
||||||
{
|
relay.on('connect', () => {
|
||||||
kinds: [0, 1, 3, 6],
|
console.log(`connected to ${relay.url}`)
|
||||||
authors: ['abcdef...', '123456...']
|
})
|
||||||
}
|
relay.on('error', () => {
|
||||||
],
|
console.log(`failed to connect to ${relay.url}`)
|
||||||
event
|
})
|
||||||
)
|
|
||||||
|
// 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
|
### Encrypting and decrypting direct messages
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const {nip04, getPublicKey, generatePrivateKey} = require('./cjs')
|
import {nip04, getPublicKey, generatePrivateKey} from 'nostr-tools'
|
||||||
|
|
||||||
// sender
|
// sender
|
||||||
let sk1 = generatePrivateKey()
|
let sk1 = generatePrivateKey()
|
||||||
|
|||||||
Reference in New Issue
Block a user