From ce214ebbabc5ed453a412a47401d3c8c2485eb08 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Thu, 30 Dec 2021 15:02:05 -0300 Subject: [PATCH] small tweaks on relayConnect. --- package.json | 2 +- relay.js | 33 +++++++++++++++++++-------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 9fd4abf..c6ced4e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nostr-tools", - "version": "0.12.3", + "version": "0.12.4", "description": "Tools for making a Nostr client.", "repository": { "type": "git", diff --git a/relay.js b/relay.js index 184f564..15cf2d3 100644 --- a/relay.js +++ b/relay.js @@ -13,7 +13,7 @@ export function normalizeRelayURL(url) { return [host, ...qs].join('?') } -export function relayConnect(url, onNotice) { +export function relayConnect(url, onNotice = () => {}, onError = () => {}) { url = normalizeRelayURL(url) var ws, resolveOpen, untilOpen, wasClosed @@ -46,8 +46,9 @@ export function relayConnect(url, onNotice) { } } } - ws.onerror = () => { + ws.onerror = (err) => { console.log('error connecting to relay', url) + onError(err) } ws.onclose = () => { resetOpenState() @@ -146,22 +147,26 @@ export function relayConnect(url, onNotice) { return { url, sub, - async publish(event, statusCallback = status => {}) { + async publish(event, statusCallback) { try { await trySend(['EVENT', event]) - statusCallback(0) - let {unsub} = sub( - { - cb: () => { - statusCallback(1) + if (statusCallback) { + statusCallback(0) + let {unsub} = sub( + { + cb: () => { + statusCallback(1) + unsub() + clearTimeout(willUnsub) + }, + filter: {id: event.id} }, - filter: {id: event.id} - }, - `monitor-${event.id.slice(0, 5)}` - ) - setTimeout(unsub, 5000) + `monitor-${event.id.slice(0, 5)}` + ) + let willUnsub = setTimeout(unsub, 5000) + } } catch (err) { - statusCallback(-1) + if (statusCallback) statusCallback(-1) } }, close() {