From df7f5b97a89d852e0f0e65e605aac95b95abf9b9 Mon Sep 17 00:00:00 2001 From: Vojtech Vitek Date: Fri, 24 Oct 2025 13:22:19 +0200 Subject: [PATCH] WIP: Stream reconnect should have args too --- _examples/sse/webapp/client.gen.ts | 40 +++++++++++++++++------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/_examples/sse/webapp/client.gen.ts b/_examples/sse/webapp/client.gen.ts index 2ba4af1..845d91d 100644 --- a/_examples/sse/webapp/client.gen.ts +++ b/_examples/sse/webapp/client.gen.ts @@ -80,8 +80,8 @@ export interface Message { export interface Chat { sendMessage(args: SendMessageArgs, headers?: object, signal?: AbortSignal): Promise - subscribeMessages(args: SubscribeMessagesArgs, options: WebrpcStreamOptions): WebrpcStreamController - subscribeUsers(options: WebrpcStreamOptions): WebrpcStreamController + subscribeMessages(args: SubscribeMessagesArgs, options: WebrpcStreamOptions): WebrpcStreamController + subscribeUsers(options: WebrpcStreamOptions): WebrpcStreamController } export interface SendMessageArgs { @@ -136,7 +136,7 @@ export class Chat implements Chat { }) } - subscribeMessages = (args: SubscribeMessagesArgs, options: WebrpcStreamOptions): WebrpcStreamController => { + subscribeMessages = (args: SubscribeMessagesArgs, options: WebrpcStreamOptions): WebrpcStreamController => { const abortController = new AbortController(); const abortSignal = abortController.signal @@ -146,12 +146,15 @@ export class Chat implements Chat { }); } - const _fetch = () => this.fetch(this.url('SubscribeMessages'),createHTTPRequest(args, options.headers, abortSignal) - ).then(async (res) => { - await sseResponse(res, options, _fetch); - }, (error) => { - options.onError(error, _fetch); - }); + const _fetch = (reconnectArgs?: SubscribeMessagesArgs) => { + const requestArgs = reconnectArgs || args; + return this.fetch(this.url('SubscribeMessages'),createHTTPRequest(requestArgs, options.headers, abortSignal) + ).then(async (res) => { + await sseResponse(res, options, _fetch); + }, (error) => { + options.onError(error, (newArgs?: SubscribeMessagesArgs) => _fetch(newArgs)); + }); + }; const resp = _fetch(); return { @@ -159,7 +162,7 @@ export class Chat implements Chat { closed: resp }; } - subscribeUsers = (options: WebrpcStreamOptions): WebrpcStreamController => { + subscribeUsers = (options: WebrpcStreamOptions): WebrpcStreamController => { const abortController = new AbortController(); const abortSignal = abortController.signal @@ -169,12 +172,15 @@ export class Chat implements Chat { }); } - const _fetch = () => this.fetch(this.url('SubscribeUsers'),createHTTPRequest({}, options.headers, options.signal) - ).then(async (res) => { - await sseResponse(res, options, _fetch); - }, (error) => { - options.onError(error, _fetch); - }); + const _fetch = (reconnectArgs?: SubscribeUsersArgs) => { + const requestArgs = reconnectArgs || {}; + return this.fetch(this.url('SubscribeUsers'),createHTTPRequest(requestArgs, options.headers, options.signal) + ).then(async (res) => { + await sseResponse(res, options, _fetch); + }, (error) => { + options.onError(error, (newArgs?: SubscribeUsersArgs) => _fetch(newArgs)); + }); + }; const resp = _fetch(); return { @@ -186,7 +192,7 @@ export class Chat implements Chat { const sseResponse = async ( res: Response, - options: WebrpcStreamOptions, + options: WebrpcStreamOptions, retryFetch: () => Promise ) => { const {onMessage, onOpen, onClose, onError} = options;