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
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
-
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 -
If the client does not support the
"graphql-transport-ws"
subprotocol, theSec-WebSocket-Protocol
header will be omitted. This causes Chrome to 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.