INTEGRITY Документация

WebSockets

Сервер

Miniflare всегда выполняет апгрейд соединений Web Socket. Worker должен отвечать статусом 101 Switching Protocols ответ, включающий webSocket. Например, Worker ниже реализует эхо-сервер WebSocket:

export default {
	fetch(request) {
		const [client, server] = Object.values(new WebSocketPair());

		server.accept();
		server.addEventListener("message", (event) => {
			server.send(event.data);
		});

		return new Response(null, {
			status: 101,
			webSocket: client,
		});
	},
};

При использовании dispatchFetch, вы несёте ответственность за обработку WebSocket с помощью webSocket свойство у Response. Например, если приведённый выше скрипт worker хранится в echo.mjs:

import { Miniflare } from "miniflare";

const mf = new Miniflare({
	modules: true,
	scriptPath: "echo.mjs",
});

const res = await mf.dispatchFetch("https://example.com", {
	headers: {
		Upgrade: "websocket",
	},
});
const webSocket = res.webSocket;
webSocket.accept();
webSocket.addEventListener("message", (event) => {
	console.log(event.data);
});

webSocket.send("Hello!"); // Above listener logs "Hello!"