UNPKG

graphql-ws

Version:

Coherent, zero-dependency, lazy, simple, GraphQL over WebSocket Protocol compliant server and client

55 lines (52 loc) 1.94 kB
import { C as CloseCode, D as DEPRECATED_GRAPHQL_WS_PROTOCOL } from '../common-CGW11Fyb.js'; export { G as GRAPHQL_TRANSPORT_WS_PROTOCOL } from '../common-CGW11Fyb.js'; import { m as makeServer } from '../server-BN3ZJY-a.js'; import 'graphql'; function makeHandler(options) { const server = makeServer(options); return function handle(socket) { socket.onerror = (err) => { console.error( "Internal error emitted on the WebSocket socket. Please check your implementation.", err ); socket.close(CloseCode.InternalServerError, "Internal server error"); }; let closed = () => { }; socket.onopen = () => { closed = server.opened( { protocol: socket.protocol, send: (msg) => socket.send(msg), close: (code, reason) => socket.close(code, reason), onMessage: (cb) => { socket.onmessage = async (event) => { try { await cb(String(event.data)); } catch (err) { console.error( "Internal error occurred during message handling. Please check your implementation.", err ); socket.close( CloseCode.InternalServerError, "Internal server error" ); } }; } }, { socket } ); }; socket.onclose = (event) => { if (event.code === CloseCode.SubprotocolNotAcceptable && socket.protocol === DEPRECATED_GRAPHQL_WS_PROTOCOL) console.warn( `Client provided the unsupported and deprecated subprotocol "${socket.protocol}" used by subscriptions-transport-ws.Please see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws.` ); closed(event.code, event.reason); }; }; } export { makeHandler };