跳转到内容
搜索文档

WebSockets

最后更新 查看 MarkdownAgent 设置

服务器 (Server)

Miniflare 始终会升级 Web Socket 连接。Worker 必须使用包含 webSocket101 Switching Protocols 状态码响应。例如,下面的 Worker 实现了一个 echo 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 时,你负责通过 Response 上的 webSocket 属性来处理 WebSockets。例如,如果上述 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!"); // 上述监听器打印 "Hello!"

这篇文档对您有帮助吗?