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

3
src/services/client.service.ts

@ -418,7 +418,8 @@ class ClientService extends EventTarget {
) { ) {
const newEventIdSet = new Set<string>() const newEventIdSet = new Set<string>()
const requestCount = subRequests.length 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 eventIdSet = new Set<string>()
let events: NEvent[] = [] let events: NEvent[] = []
let eosedCount = 0 let eosedCount = 0

Loading…
Cancel
Save