🚡
graphql-ws
on Cloudflare Workers
A template for WebSockets powered Cloudflare Worker project using graphql-ws.
The worker serves the following routes:
"/"
renders GraphiQL using onlygraphql-ws
(as showcased here)"/graphql"
serves the GraphQL over WebSocket
Getting started
This template is meant to be used with Wrangler. If you are not already familiar with the tool, we recommend that you install the tool and configure it to work with your Cloudflare account. Documentation can be found here.
To generate using Wrangler, run this command:
wrangler generate my-graphql-ws https://github.com/enisdenjo/cloudflare-worker-graphql-ws-template
Gotchas
-
Server WebSocket instance does not contain the
protocol
property (asws
does) which is why you should pass theSec-WebSocket-Protocol
header to thegraphql-ws
server -
Message listener event
data
property is already a string -
Responding with the same
Sec-WebSocket-Protocol
header is necessary for Chrome otherwise it will abruptly terminate the connection with a1006
close event code -
webpack.config.js
is configured to omit thebrowser
entry field inpackage.json
s since we are bundling for Node workers and not for browsersThis is especially necessary for
graphql-ws
since thebrowser
bundle does NOT contain any server code.