Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

WebSockets

最終更新 Markdown で表示Agent セットアップ

サーバー

Miniflare は WebSocket 接続を常にアップグレードします。Worker は webSocket を含むステータス 101 Switching Protocols のレスポンスを返す必要があります。たとえば、次の 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 を使う場合、ResponsewebSocket プロパティで WebSocket を処理する必要があります。例として、上記の 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!"

役に立ちましたか?