✉️ WebSockets
Miniflare will always upgrade Web Socket connections. The Worker must respond
with a status 101 Switching Protocols response including a webSocket. For
example, the Worker below implements an echo WebSocket server:
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,    });  },};When using dispatchFetch, you are responsible for handling WebSockets by using
the webSocket property on Response. As an example, if the above worker
script was stored in 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!"Was this helpful?
- Resources
 - API
 - New to Cloudflare?
 - Products
 - Sponsorships
 - Open Source
 
- Support
 - Help Center
 - System Status
 - Compliance
 - GDPR
 
- Company
 - cloudflare.com
 - Our team
 - Careers
 
- 2025 Cloudflare, Inc.
 - Privacy Policy
 - Terms of Use
 - Report Security Issues
 - Trademark