make timeouts configurable for pool.

This commit is contained in:
fiatjaf 2023-02-26 16:49:50 -03:00
parent 63f4a49a69
commit a21329da3f
No known key found for this signature in database
GPG Key ID: BAD43C4BE5C1A3A1
2 changed files with 9 additions and 4 deletions

View File

@ -1,6 +1,6 @@
{
"name": "nostr-tools",
"version": "1.6.2",
"version": "1.6.3",
"description": "Tools for making a Nostr client.",
"repository": {
"type": "git",

11
pool.ts
View File

@ -8,8 +8,13 @@ export class SimplePool {
private _conn: {[url: string]: Relay}
private _seenOn: {[id: string]: Set<string>} = {} // a map of all events we've seen in each relay
constructor() {
private eoseSubTimeout: number
private getTimeout: number
constructor(options: {eoseSubTimeout?: number; getTimeout?: number} = {}) {
this._conn = {}
this.eoseSubTimeout = options.eoseSubTimeout || 3400
this.getTimeout = options.getTimeout || 3400
}
close(relays: string[]): void {
@ -51,7 +56,7 @@ export class SimplePool {
let eoseTimeout = setTimeout(() => {
eoseSent = true
for (let cb of eoseListeners.values()) cb()
}, 3500)
}, this.eoseSubTimeout)
relays.forEach(async relay => {
let r
@ -120,7 +125,7 @@ export class SimplePool {
let timeout = setTimeout(() => {
sub.unsub()
resolve(null)
}, 3500)
}, this.getTimeout)
sub.on('event', (event: Event) => {
resolve(event)
clearTimeout(timeout)