diff --git a/README.md b/README.md index d4c86ff..d8db6ed 100644 --- a/README.md +++ b/README.md @@ -151,11 +151,12 @@ Key | Type | Description ### `res`-Object -Key | Type | Description ---------- | ------------------- | ----------- -`body` | `object` / `string` | Either set an `object` (will be converted to JSON) or a string -`headers` | `Headers` | Response [Headers Object](https://developer.mozilla.org/en-US/docs/Web/API/Headers) -`status` | `integer` | Return status code (default: `204`) +Key | Type | Description +----------- | ------------------- | ----------- +`body` | `object` / `string` | Either set an `object` (will be converted to JSON) or a string +`headers` | `Headers` | Response [Headers Object](https://developer.mozilla.org/en-US/docs/Web/API/Headers) +`status` | `integer` | Return status code (default: `204`) +`webSocket` | `WebSocket` | Upgraded websocket connection ## Setup diff --git a/index.d.ts b/index.d.ts index 79724a2..f97b116 100644 --- a/index.d.ts +++ b/index.d.ts @@ -321,6 +321,10 @@ type RouterResponse = { body: { [key: string]: string } | string + /** + * Upgraded websocket connection + */ + webSocket?: WebSocket } /** * Next Function diff --git a/index.js b/index.js index c7d51d1..3a66caf 100644 --- a/index.js +++ b/index.js @@ -384,10 +384,17 @@ class Router { if (res.raw) { return res.raw } - return new Response(res.body, { + + const resInit = { status: res.status || (res.body ? 200 : 204), headers: res.headers - }) + } + + if (res.webSocket) { + resInit.webSocket = res.webSocket + } + + return new Response(res.body, resInit) } catch(err) { console.error(err) return new Response(this.debugMode ? err.stack : '', { status: 500 })