@@ -40,10 +40,11 @@ export class MyDurableObject extends DurableObject<Env> {
4040 async start(controller ) {
4141 if (request .signal .aborted ) {
4242 controller .close ();
43+ abortController .abort ();
4344 return ;
4445 }
4546
46- for await (const value of dataSource (AbortSignal . any ([ request . signal , abortController .signal ]) )) {
47+ for await (const value of dataSource (abortController .signal )) {
4748 controller .enqueue (new TextEncoder ().encode (String (value )));
4849 }
4950 },
@@ -65,29 +66,35 @@ export default {
6566 async fetch(request , env , ctx ): Promise <Response > {
6667 const id: DurableObjectId = env .MY_DURABLE_OBJECT .idFromName (' my-id' );
6768 const stub = env .MY_DURABLE_OBJECT .get (id );
68- const response = await stub .fetch (request );
69+ const response = await stub .fetch (request , { ... request } );
6970 if (! response .ok || ! response .body ) {
7071 return new Response (' Invalid response' , { status: 500 });
7172 }
7273
73- const reader = response .body .getReader ();
74+ const reader = response .body .pipeThrough ( new TextDecoderStream ()). getReader ();
7475
75- // Cancel the stream after 5 messages
76+ let data = [] as string [];
7677 let i = 0 ;
7778 while (true ) {
79+ // Cancel the stream after 5 messages
7880 if (i > 5 ) {
7981 reader .cancel ();
8082 break ;
8183 }
8284 const { value, done } = await reader .read ();
83- console .log (` Got value ${new TextDecoder ().decode (value )} ` );
85+
86+ if (value ) {
87+ console .log (` Got value ${value } ` );
88+ data = [... data , value ];
89+ }
90+
8491 if (done ) {
8592 break ;
8693 }
8794 i ++ ;
8895 }
8996
90- return new Response ( ' Done ' , { status: 200 } );
97+ return Response . json ( data );
9198 },
9299} satisfies ExportedHandler <Env >;
93100```
0 commit comments