diff options
Diffstat (limited to 'std/http/racing_server.ts')
-rw-r--r-- | std/http/racing_server.ts | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/std/http/racing_server.ts b/std/http/racing_server.ts index 629fef2db..0b0e5a8a5 100644 --- a/std/http/racing_server.ts +++ b/std/http/racing_server.ts @@ -5,12 +5,15 @@ import { delay } from "../util/async.ts"; const addr = Deno.args[1] || "127.0.0.1:4501"; const server = serve(addr); -const body = new TextEncoder().encode("Hello 1\n"); -const body4 = new TextEncoder().encode("World 4\n"); - -async function delayedRespond(request: ServerRequest): Promise<void> { +function body(i: number): string { + return `Step${i}\n`; +} +async function delayedRespond( + request: ServerRequest, + step: number +): Promise<void> { await delay(3000); - await request.respond({ status: 200, body }); + await request.respond({ status: 200, body: body(step) }); } async function largeRespond(request: ServerRequest, c: string): Promise<void> { @@ -19,6 +22,13 @@ async function largeRespond(request: ServerRequest, c: string): Promise<void> { await request.respond({ status: 200, body: b }); } +async function ignoreToConsume( + request: ServerRequest, + step: number +): Promise<void> { + await request.respond({ status: 200, body: body(step) }); +} + console.log("Racing server listening...\n"); let step = 1; @@ -28,7 +38,7 @@ for await (const request of server) { // Try to wait long enough. // For pipelining, this should cause all the following response // to block. - delayedRespond(request); + delayedRespond(request, step); break; case 2: // HUGE body. @@ -38,8 +48,20 @@ for await (const request of server) { // HUGE body. largeRespond(request, "b"); break; + case 4: + // Ignore to consume body (content-length) + ignoreToConsume(request, step); + break; + case 5: + // Ignore to consume body (chunked) + ignoreToConsume(request, step); + break; + case 6: + // Ignore to consume body (chunked + trailers) + ignoreToConsume(request, step); + break; default: - request.respond({ status: 200, body: body4 }); + request.respond({ status: 200, body: body(step) }); break; } step++; |