mirror of
https://github.com/nbd-wtf/nostr-tools.git
synced 2025-12-11 01:28:51 +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": {
|
||||||
|
|||||||
27
relay.js
27
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()}`
|
||||||
)
|
)
|
||||||
@@ -32,7 +34,19 @@ export function relayConnect(url, onEvent, onNotice) {
|
|||||||
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)
|
|
||||||
|
|
||||||
|
try {
|
||||||
connect()
|
connect()
|
||||||
|
} catch (err) {}
|
||||||
|
|
||||||
async function trySend(msg) {
|
async function trySend(msg) {
|
||||||
if (ws && ws.readyState === WebSocket.OPEN) {
|
if (ws && ws.readyState === WebSocket.OPEN) {
|
||||||
|
|||||||
Reference in New Issue
Block a user