umk0m1qk
354b80a929
fix(relay): move _connected = false above closeAllSubscriptions() in close()
...
close() was setting _connected = false after closeAllSubscriptions(), which meant each sub still saw the relay as connected and tried to send CLOSE frames. Those sends get queued as microtasks, but by the time they run the socket is already closing, so you get a bunch of "WebSocket is already in CLOSING or CLOSED state" warnings.
handleHardClose() already gets this order right — this just makes close() consistent with that.
2026-02-11 12:24:58 -03:00
fiatjaf
28f7553187
fix a type so jsr is happy.
2026-02-02 18:49:17 -03:00
fiatjaf
ca29d9b515
ok, we need the prepareSubscription method.
2026-02-02 18:46:50 -03:00
fiatjaf
ab802c8dbe
automatic prune broken relay objects and keep track of relay idleness so they can be pruned.
2026-02-02 18:44:52 -03:00
fiatjaf
be9b91318f
relay: get rid of the message queue, because js is single-threaded.
2026-02-02 09:06:56 -03:00
fiatjaf
b4bec2097d
finally stop reconnecting when the first connection fails once and for all.
2026-01-31 19:27:45 -03:00
fiatjaf
fb7de7f1aa
prevent reconnections when initial connection fails.
2026-01-31 13:57:33 -03:00
fiatjaf
b624ad4059
pool: hooks to notify when a relay fails to connect, then ask whether a connection should be attempted.
2026-01-30 17:35:46 -03:00
fiatjaf
9078f45a64
optionally take an AbortSignal on subscriptions.
2026-01-22 21:49:39 -03:00
fiatjaf
e290f98a86
label forced ping subscription.
2025-12-10 21:06:31 -03:00
fiatjaf
0b6543e1a8
use setInterval() instead of nested setTimeout()s for pingpong.
...
prevent call stacks from building up
2025-12-05 21:46:16 -03:00
fiatjaf
693b262b7c
CLOSED answers to dummyReq are also ok.
2025-12-05 21:03:34 -03:00
fiatjaf
85c964be3d
enableReconnect() always update the filters to the time of the last received event on each subscription.
2025-12-05 13:24:49 -03:00
fiatjaf
de7d459f6f
only transform filters with enableReconnect() when we're actually reconnecting.
2025-12-05 09:22:33 -03:00
fiatjaf
21ec5bb2dc
allow automatically performing AUTH against all relays.
2025-12-05 09:12:59 -03:00
fiatjaf
c45e861493
fire subscriptions.
...
this was broken during the negentropy stuff.
fixes https://github.com/nbd-wtf/nostr-tools/issues/517
2025-11-19 14:53:24 -03:00
fiatjaf
66cc55c7f0
nip77: negentropy implementation and nip77 interface.
...
supersedes https://github.com/nbd-wtf/nostr-tools/pull/516
2025-11-18 09:33:11 -03:00
fiatjaf
5841b0936b
throw when subscription is created without filters.
...
fixes https://github.com/nbd-wtf/nostr-tools/pull/497
2025-11-18 08:09:45 -03:00
max-gy
e19db61bec
nip77: adds wrapper for negentropy and fallback for yieldThread MessageChannel
2025-11-18 08:06:26 -03:00
Chris McCormick
1bec9fa365
Ping pong memory leak fix for #511 ( #512 )
...
* New test for pingpong memory leak (failing).
* Shim once in relay ping mem test.
* Fix pong memory leak with .once.
Fixes #511 .
* Fix missing global WebSocket on Node.
* Lint fix.
* Remove overkill WebSocket impl check.
2025-10-26 23:33:38 -03:00
Chris McCormick
bc1294e4e6
Reconnect with exponential backoff flag: enableReconnect ( #507 )
...
https://github.com/nbd-wtf/nostr-tools/pull/507
2025-09-30 10:01:07 -03:00
codytseng
8866042edf
relay: ensure onclose callback is triggered
2025-08-24 22:22:38 -03:00
fiatjaf
86235314c4
deduplicate relay URLs in pool.subscribe() and pool.subscribeMany()
2025-08-06 10:37:36 -03:00
Chris McCormick
87f2c74bb3
Get pingpong working in the browser with dummy REQ ( #499 )
2025-07-24 11:22:15 -03:00
fiatjaf
4b6cc19b9c
cleanup.
2025-07-23 16:22:25 -03:00
Chris McCormick
6ec19b618c
WIP: pingpong with logging.
2025-07-23 16:16:12 -03:00
Chris McCormick
b3cc9f50e5
WIP: hack in pingpong #495
...
TypeScript does not like the duck typing of .on and .ping (only valid on Node ws).
2025-07-23 16:16:12 -03:00
fiatjaf
d706ef961f
pool: closed relays must be eliminated.
2025-07-17 23:39:16 -03:00
fiatjaf
f0357805c3
catch errors on function passed to auth() and log them.
2025-06-10 10:20:20 -03:00
fiatjaf
ffa7fb926e
remove deprecated unused _onauth hook.
2025-06-10 10:16:11 -03:00
fiatjaf
5b78a829c7
ignore error when sending on a CLOSE to a closed connection.
2025-05-31 12:29:24 -03:00
fiatjaf
de26ee98c5
failed to connect to a websocket should reject the promise.
2025-05-31 11:16:22 -03:00
codytseng
c015b6e794
fix bug where concurrent auth calls returned only one response
2025-05-09 08:43:53 -03:00
fiatjaf
dd603e47d8
some small bugs codebuff found.
2025-04-03 23:31:34 -03:00
codytseng
6b39de04d7
Fix auth() not returning on consecutive calls
2025-03-17 13:31:24 -03:00
fiatjaf
05eb62da5b
support subscription label, not only an absolute id.
2025-03-02 01:25:39 -03:00
im-adithya
9c50b2c655
fix: clear timeout in publish and auth
2024-12-03 11:09:11 -03:00
Asai Toshiya
d062ab8afd
make publish() timeout.
2024-10-30 11:55:04 -03:00
Callum Macdonald
0b5b35714c
Add subscription id to relay.subscribe().
...
fix #439
2024-10-17 09:30:49 -03:00
fiatjaf
753ff323ea
specify websocket error as close reason when no message is available.
...
fixes https://github.com/nbd-wtf/nostr-tools/issues/411
2024-06-06 15:32:27 -03:00
fiatjaf
87a91c2daf
fix useWebSocketImplementation so it works with pool on nodejs esm.
2024-05-29 13:39:00 -03:00
hzrd149
e217f751da
fix count request in anstract relay
2024-05-02 11:37:50 -03:00
fiatjaf
1d7620a057
temporary _onauth handler until we figure stuff out.
2024-04-05 07:22:17 -03:00
fiatjaf
564c9bca17
don't try to send a ["CLOSE"] after the websocket is closed.
...
addresses https://github.com/nbd-wtf/nostr-tools/pull/387
2024-03-16 13:40:02 -03:00
fiatjaf
0190ae94a7
Revert "fix: error thrown on ws close"
...
This reverts commit e1bde08ff3 .
2024-03-16 13:32:33 -03:00
Jeffrey Ko
e1bde08ff3
fix: error thrown on ws close
2024-03-16 13:29:24 -03:00
Alex Gleason
9c0ade1329
Fix (most) slow types by adding explicit return types
2024-03-07 07:22:44 -03:00
fiatjaf
01f13292bb
useWebSocketImplementation() on relay.ts
2024-02-14 13:19:48 -03:00
fiatjaf
1cfe705baf
auth() returns a promise that resolves on OK.
...
fixes https://github.com/nbd-wtf/nostr-tools/issues/336
2023-12-26 07:56:55 -03:00
fiatjaf
703c29a311
fix things so relays tests work.
2023-12-22 11:38:35 -03:00