diff options
author | Leo K <crowlkats@toaxl.com> | 2021-07-08 13:33:01 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-08 13:33:01 +0200 |
commit | 5e092b19fe113bdecd36b4e0184c82f4b3343bca (patch) | |
tree | ff2799d9d40812fd5755271a8c0ec94e304ad14a /cli/tests/unit/http_test.ts | |
parent | 215f6f2c9e0522c7c8d794f35713225884540cd7 (diff) |
feat(runtime/http): server side websocket support (#10359)
Co-authored-by: Nayeem Rahman <nayeemrmn99@gmail.com>
Co-authored-by: Luca Casonato <hello@lcas.dev>
Diffstat (limited to 'cli/tests/unit/http_test.ts')
-rw-r--r-- | cli/tests/unit/http_test.ts | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/cli/tests/unit/http_test.ts b/cli/tests/unit/http_test.ts index ad78e1e44..21325ff77 100644 --- a/cli/tests/unit/http_test.ts +++ b/cli/tests/unit/http_test.ts @@ -9,6 +9,7 @@ import { assertThrowsAsync, deferred, delay, + fail, unitTest, } from "./test_util.ts"; @@ -631,3 +632,33 @@ unitTest( await promise; }, ); + +unitTest({ perms: { net: true } }, async function httpServerWebSocket() { + const promise = (async () => { + const listener = Deno.listen({ port: 4501 }); + for await (const conn of listener) { + const httpConn = Deno.serveHttp(conn); + const { request, respondWith } = (await httpConn.nextRequest())!; + const { + response, + websocket, + } = await Deno.upgradeWebSocket(request); + websocket.onerror = () => fail(); + websocket.onmessage = (m) => { + websocket.send(m.data); + websocket.close(); + }; + await respondWith(response); + break; + } + })(); + + const def = deferred(); + const ws = new WebSocket("ws://localhost:4501"); + ws.onmessage = (m) => assertEquals(m.data, "foo"); + ws.onerror = () => fail(); + ws.onclose = () => def.resolve(); + ws.onopen = () => ws.send("foo"); + await def; + await promise; +}); |