UNPKG

graphql-ws

Version:

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

57 lines (53 loc) 1.95 kB
'use strict'; var common = require('../common-DqFHi7oM.cjs'); var server = require('../server-Dr_BC2Xw.cjs'); require('graphql'); function makeHandler(options) { const server$1 = 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(common.CloseCode.InternalServerError, "Internal server error"); }; let closed = () => { }; socket.onopen = () => { closed = server$1.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( common.CloseCode.InternalServerError, "Internal server error" ); } }; } }, { socket } ); }; socket.onclose = (event) => { if (event.code === common.CloseCode.SubprotocolNotAcceptable && socket.protocol === common.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); }; }; } exports.GRAPHQL_TRANSPORT_WS_PROTOCOL = common.GRAPHQL_TRANSPORT_WS_PROTOCOL; exports.makeHandler = makeHandler;