mirror of
https://github.com/nbd-wtf/nostr-tools.git
synced 2025-12-09 08:38:50 +00:00
eliminate fake uncatched errors from connect().
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "nostr-tools",
|
"name": "nostr-tools",
|
||||||
"version": "0.3.0",
|
"version": "0.3.2",
|
||||||
"description": "Tools for making a Nostr client.",
|
"description": "Tools for making a Nostr client.",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
33
relay.js
33
relay.js
@@ -12,14 +12,16 @@ export function relayConnect(url, onEvent, onNotice) {
|
|||||||
url = normalizeRelayURL(url)
|
url = normalizeRelayURL(url)
|
||||||
|
|
||||||
let ws, resolveOpen, untilOpen, rejectOpen
|
let ws, resolveOpen, untilOpen, rejectOpen
|
||||||
|
let attemptNumber = 1
|
||||||
|
|
||||||
function connect() {
|
function resetOpenState() {
|
||||||
|
|
||||||
untilOpen = new Promise((resolve, reject) => {
|
untilOpen = new Promise((resolve, reject) => {
|
||||||
resolveOpen = resolve
|
resolveOpen = resolve
|
||||||
rejectOpen = reject
|
rejectOpen = reject
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function connect() {
|
||||||
ws = new WebSocket(
|
ws = new WebSocket(
|
||||||
url + (url.indexOf('?') !== -1 ? '&' : '?') + `session=${Math.random()}`
|
url + (url.indexOf('?') !== -1 ? '&' : '?') + `session=${Math.random()}`
|
||||||
)
|
)
|
||||||
@@ -28,11 +30,23 @@ export function relayConnect(url, onEvent, onNotice) {
|
|||||||
console.log('connected to', url)
|
console.log('connected to', url)
|
||||||
resolveOpen()
|
resolveOpen()
|
||||||
}
|
}
|
||||||
ws.onerror = err => {
|
ws.onerror = err => {
|
||||||
console.log('error connecting to relay', url, err)
|
console.log('error connecting to relay', url, err)
|
||||||
rejectOpen()
|
rejectOpen()
|
||||||
}
|
}
|
||||||
ws.onclose = () => console.log('relay connection closed', url)
|
ws.onclose = () => {
|
||||||
|
resetOpenState()
|
||||||
|
attemptNumber++
|
||||||
|
console.log(
|
||||||
|
`relay ${url} connection closed. reconnecting in ${attemptNumber} seconds.`
|
||||||
|
)
|
||||||
|
setTimeout(async () => {
|
||||||
|
try {
|
||||||
|
connect()
|
||||||
|
} catch (err) {}
|
||||||
|
}, attemptNumber * 1000)
|
||||||
|
}
|
||||||
|
|
||||||
ws.onmessage = async e => {
|
ws.onmessage = async e => {
|
||||||
var data
|
var data
|
||||||
try {
|
try {
|
||||||
@@ -72,12 +86,11 @@ export function relayConnect(url, onEvent, onNotice) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setInterval(() => {
|
resetOpenState()
|
||||||
if (!ws || ws.readyState !== WebSocket.OPEN)
|
|
||||||
connect()
|
|
||||||
}, 180 * 1000)
|
|
||||||
|
|
||||||
connect()
|
try {
|
||||||
|
connect()
|
||||||
|
} catch (err) {}
|
||||||
|
|
||||||
async function trySend(msg) {
|
async function trySend(msg) {
|
||||||
if (ws && ws.readyState === WebSocket.OPEN) {
|
if (ws && ws.readyState === WebSocket.OPEN) {
|
||||||
@@ -86,7 +99,7 @@ export function relayConnect(url, onEvent, onNotice) {
|
|||||||
try {
|
try {
|
||||||
await untilOpen
|
await untilOpen
|
||||||
ws.send(msg)
|
ws.send(msg)
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
console.log(`waiting to connect to ${url}`)
|
console.log(`waiting to connect to ${url}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user