try-catch the InternalRelay req's
This commit is contained in:
parent
7a18a19b2f
commit
7aa931a69e
|
@ -16,7 +16,7 @@
|
||||||
"exclude": ["./public"],
|
"exclude": ["./public"],
|
||||||
"imports": {
|
"imports": {
|
||||||
"@/": "./src/",
|
"@/": "./src/",
|
||||||
"@nostrify/nostrify": "jsr:@nostrify/nostrify@^0.12.1",
|
"@nostrify/nostrify": "jsr:@nostrify/nostrify@^0.14.2",
|
||||||
"@std/cli": "jsr:@std/cli@^0.223.0",
|
"@std/cli": "jsr:@std/cli@^0.223.0",
|
||||||
"@std/json": "jsr:@std/json@^0.223.0",
|
"@std/json": "jsr:@std/json@^0.223.0",
|
||||||
"@std/streams": "jsr:@std/streams@^0.223.0",
|
"@std/streams": "jsr:@std/streams@^0.223.0",
|
||||||
|
|
|
@ -68,28 +68,32 @@ const streamingController: AppController = (c) => {
|
||||||
const filter = await topicToFilter(stream, c.req.query(), pubkey);
|
const filter = await topicToFilter(stream, c.req.query(), pubkey);
|
||||||
if (!filter) return;
|
if (!filter) return;
|
||||||
|
|
||||||
for await (const msg of Storages.pubsub.req([filter], { signal: controller.signal })) {
|
try {
|
||||||
if (msg[0] === 'EVENT') {
|
for await (const msg of Storages.pubsub.req([filter], { signal: controller.signal })) {
|
||||||
const [event] = await hydrateEvents({
|
if (msg[0] === 'EVENT') {
|
||||||
events: [msg[2]],
|
const [event] = await hydrateEvents({
|
||||||
storage: eventsDB,
|
events: [msg[2]],
|
||||||
signal: AbortSignal.timeout(1000),
|
storage: eventsDB,
|
||||||
});
|
signal: AbortSignal.timeout(1000),
|
||||||
|
});
|
||||||
|
|
||||||
if (event.kind === 1) {
|
if (event.kind === 1) {
|
||||||
const status = await renderStatus(event, { viewerPubkey: pubkey });
|
const status = await renderStatus(event, { viewerPubkey: pubkey });
|
||||||
if (status) {
|
if (status) {
|
||||||
send('update', status);
|
send('update', status);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (event.kind === 6) {
|
if (event.kind === 6) {
|
||||||
const status = await renderReblog(event, { viewerPubkey: pubkey });
|
const status = await renderReblog(event, { viewerPubkey: pubkey });
|
||||||
if (status) {
|
if (status) {
|
||||||
send('update', status);
|
send('update', status);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (e) {
|
||||||
|
debug('streaming error:', e);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -77,10 +77,14 @@ function connectStream(socket: WebSocket) {
|
||||||
|
|
||||||
send(['EOSE', subId]);
|
send(['EOSE', subId]);
|
||||||
|
|
||||||
for await (const msg of Storages.pubsub.req(filters, { signal: controller.signal })) {
|
try {
|
||||||
if (msg[0] === 'EVENT') {
|
for await (const msg of Storages.pubsub.req(filters, { signal: controller.signal })) {
|
||||||
send(['EVENT', subId, msg[2]]);
|
if (msg[0] === 'EVENT') {
|
||||||
|
send(['EVENT', subId, msg[2]]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} catch (_e) {
|
||||||
|
controllers.delete(subId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,12 +18,6 @@ type EventStub = TypeFest.SetOptional<EventTemplate, 'content' | 'created_at' |
|
||||||
|
|
||||||
/** Publish an event through the pipeline. */
|
/** Publish an event through the pipeline. */
|
||||||
async function createEvent(t: EventStub, c: AppContext): Promise<NostrEvent> {
|
async function createEvent(t: EventStub, c: AppContext): Promise<NostrEvent> {
|
||||||
const pubkey = c.get('pubkey');
|
|
||||||
|
|
||||||
if (!pubkey) {
|
|
||||||
throw new HTTPException(401);
|
|
||||||
}
|
|
||||||
|
|
||||||
const signer = new APISigner(c);
|
const signer = new APISigner(c);
|
||||||
|
|
||||||
const event = await signer.signEvent({
|
const event = await signer.signEvent({
|
||||||
|
|
Loading…
Reference in New Issue