mirror of
https://github.com/nbd-wtf/nostr-tools.git
synced 2025-12-09 08:38:50 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9d345a8f01 | ||
|
|
c362212778 |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "nostr-tools",
|
||||
"version": "1.6.3",
|
||||
"version": "1.7.1",
|
||||
"description": "Tools for making a Nostr client.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
23
pool.ts
23
pool.ts
@@ -29,7 +29,10 @@ export class SimplePool {
|
||||
const existing = this._conn[nm]
|
||||
if (existing) return existing
|
||||
|
||||
const relay = relayInit(nm)
|
||||
const relay = relayInit(nm, {
|
||||
getTimeout: this.getTimeout * 0.9,
|
||||
listTimeout: this.getTimeout * 0.9
|
||||
})
|
||||
this._conn[nm] = relay
|
||||
|
||||
await relay.connect()
|
||||
@@ -155,13 +158,23 @@ export class SimplePool {
|
||||
})
|
||||
}
|
||||
|
||||
publish(relays: string[], event: Event): Pub[] {
|
||||
return relays.map(relay => {
|
||||
publish(relays: string[], event: Event): Pub {
|
||||
let pubs = relays.map(relay => {
|
||||
let r = this._conn[normalizeURL(relay)]
|
||||
if (!r) return badPub(relay)
|
||||
let s = r.publish(event)
|
||||
return s
|
||||
return r.publish(event)
|
||||
})
|
||||
|
||||
return {
|
||||
on(type, cb) {
|
||||
pubs.forEach((pub, i) => {
|
||||
pub.on(type, () => cb(relays[i]))
|
||||
})
|
||||
},
|
||||
off() {
|
||||
// do nothing here, FIXME
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
seenOn(id: string): string[] {
|
||||
|
||||
14
relay.ts
14
relay.ts
@@ -35,7 +35,15 @@ export type SubscriptionOptions = {
|
||||
alreadyHaveEvent?: null | ((id: string, relay: string) => boolean)
|
||||
}
|
||||
|
||||
export function relayInit(url: string): Relay {
|
||||
export function relayInit(
|
||||
url: string,
|
||||
options: {
|
||||
getTimeout?: number
|
||||
listTimeout?: number
|
||||
} = {}
|
||||
): Relay {
|
||||
let {listTimeout = 3000, getTimeout = 3000} = options
|
||||
|
||||
var ws: WebSocket
|
||||
var openSubs: {[id: string]: {filters: Filter[]} & SubscriptionOptions} = {}
|
||||
var listeners: {
|
||||
@@ -252,7 +260,7 @@ export function relayInit(url: string): Relay {
|
||||
let timeout = setTimeout(() => {
|
||||
s.unsub()
|
||||
resolve(events)
|
||||
}, 1500)
|
||||
}, listTimeout)
|
||||
s.on('eose', () => {
|
||||
s.unsub()
|
||||
clearTimeout(timeout)
|
||||
@@ -268,7 +276,7 @@ export function relayInit(url: string): Relay {
|
||||
let timeout = setTimeout(() => {
|
||||
s.unsub()
|
||||
resolve(null)
|
||||
}, 1500)
|
||||
}, getTimeout)
|
||||
s.on('event', (event: Event) => {
|
||||
s.unsub()
|
||||
clearTimeout(timeout)
|
||||
|
||||
Reference in New Issue
Block a user