summaryrefslogtreecommitdiff
path: root/extensions/http/lib.deno_http.unstable.d.ts
diff options
context:
space:
mode:
authorLuca Casonato <hello@lcas.dev>2021-07-12 12:44:49 +0200
committerGitHub <noreply@github.com>2021-07-12 12:44:49 +0200
commitf649960f87a408124b5b0d6f55f3be7f5724a4e7 (patch)
tree0a303a918828f602623c64c50a912645df55b772 /extensions/http/lib.deno_http.unstable.d.ts
parent6460eadaa178b3a9d09d04205977e4f659fe8fff (diff)
refactor: deno_http op crate (#11335)
Diffstat (limited to 'extensions/http/lib.deno_http.unstable.d.ts')
-rw-r--r--extensions/http/lib.deno_http.unstable.d.ts65
1 files changed, 65 insertions, 0 deletions
diff --git a/extensions/http/lib.deno_http.unstable.d.ts b/extensions/http/lib.deno_http.unstable.d.ts
new file mode 100644
index 000000000..30ffe121e
--- /dev/null
+++ b/extensions/http/lib.deno_http.unstable.d.ts
@@ -0,0 +1,65 @@
+// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
+
+/// <reference no-default-lib="true" />
+/// <reference lib="esnext" />
+
+declare namespace Deno {
+ export interface RequestEvent {
+ readonly request: Request;
+ respondWith(r: Response | Promise<Response>): Promise<void>;
+ }
+
+ export interface HttpConn extends AsyncIterable<RequestEvent> {
+ readonly rid: number;
+
+ nextRequest(): Promise<RequestEvent | null>;
+ close(): void;
+ }
+
+ export interface WebSocketUpgrade {
+ response: Response;
+ websocket: WebSocket;
+ }
+
+ export interface UpgradeWebSocketOptions {
+ protocol?: string;
+ }
+
+ /** **UNSTABLE**: new API, yet to be vetted.
+ *
+ * Used to upgrade an incoming HTTP request to a WebSocket.
+ *
+ * Given a request, returns a pair of WebSocket and Response. The original
+ * request must be responded to with the returned response for the websocket
+ * upgrade to be successful.
+ *
+ * ```ts
+ * const conn = await Deno.connect({ port: 80, hostname: "127.0.0.1" });
+ * const httpConn = Deno.serveHttp(conn);
+ * const e = await httpConn.nextRequest();
+ * if (e) {
+ * const { websocket, response } = Deno.upgradeWebSocket(e.request);
+ * websocket.onopen = () => {
+ * websocket.send("Hello World!");
+ * };
+ * websocket.onmessage = (e) => {
+ * console.log(e.data);
+ * websocket.close();
+ * };
+ * websocket.onclose = () => console.log("WebSocket has been closed.");
+ * websocket.onerror = (e) => console.error("WebSocket error:", e.message);
+ * e.respondWith(response);
+ * }
+ * ```
+ *
+ * If the request body is disturbed (read from) before the upgrade is
+ * completed, upgrading fails.
+ *
+ * This operation does not yet consume the request or open the websocket. This
+ * only happens once the returned response has been passed to `respondWith`.
+ */
+ export function upgradeWebSocket(
+ request: Request,
+ options?: UpgradeWebSocketOptions,
+ ): WebSocketUpgrade;
+}