Browse Source

tried to speed up relays

imwald
Silberengel 5 months ago
parent
commit
5008178c35
  1. 16
      src/components/ReplyNoteList/index.tsx
  2. 3
      src/services/client.service.ts

16
src/components/ReplyNoteList/index.tsx

@ -219,21 +219,21 @@ export default function ReplyNoteList({ index, event, sort = 'oldest' }: { index @@ -219,21 +219,21 @@ export default function ReplyNoteList({ index, event, sort = 'oldest' }: { index
setLoading(true)
try {
const relayList = await client.fetchRelayList(
(rootInfo as { pubkey?: string }).pubkey ?? event.pubkey
)
// Include user's mailbox relays for better reply discovery
const userRelays = userRelayList?.read || []
const relayUrls = Array.from(new Set(relayList.read.concat(userRelays).concat(FAST_READ_RELAY_URLS)))
const seenOn =
rootInfo.type === 'E'
? client.getSeenEventRelayUrls(rootInfo.id)
: rootInfo.type === 'A'
? client.getSeenEventRelayUrls(rootInfo.eventId)
: []
relayUrls.unshift(...seenOn)
// Deduplicate the final list including seenOn relays
const finalRelayUrls = Array.from(new Set(relayUrls))
// Optimize relay selection: prioritize seen relays, then fast relays, then user relays
const finalRelayUrls = Array.from(new Set([
...seenOn, // Highest priority: relays where the event was seen
...FAST_READ_RELAY_URLS, // Second priority: fast, well-connected relays
...userRelays // Third priority: user's mailbox relays
]))
const filters: (Omit<Filter, 'since' | 'until'> & {
limit: number
@ -284,7 +284,7 @@ export default function ReplyNoteList({ index, event, sort = 'oldest' }: { index @@ -284,7 +284,7 @@ export default function ReplyNoteList({ index, event, sort = 'oldest' }: { index
}
const { closer, timelineKey } = await client.subscribeTimeline(
filters.map((filter) => ({
urls: finalRelayUrls.slice(0, 5),
urls: finalRelayUrls.slice(0, 8), // Increased from 5 to 8 for better coverage
filter
})),
{

3
src/services/client.service.ts

@ -418,7 +418,8 @@ class ClientService extends EventTarget { @@ -418,7 +418,8 @@ class ClientService extends EventTarget {
) {
const newEventIdSet = new Set<string>()
const requestCount = subRequests.length
const threshold = Math.floor(requestCount / 2)
// More aggressive threshold for faster loading - respond when 1/3 of relays respond
const threshold = Math.max(1, Math.floor(requestCount / 3))
let eventIdSet = new Set<string>()
let events: NEvent[] = []
let eosedCount = 0

Loading…
Cancel
Save