Я использую веб-сокеты через AWS API Gateway с Serverless Framework .
Я установил функцию обработчика соединения, которая проходит через пользовательский авторизатор (успешно) и возвращает объект как таковой, как в выражении обратного вызова, так и в операторе возврата, просто чтобы быть уверенным:
const result: APIGatewayProxyResult = {
statusCode: OK,
headers: {
'Sec-WebSocket-Protocol': 'graphql-ws',
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
},
body: 'Connected'
};
callback(null, result);
return result;
В журналах говорится, что все идет гладко, но по какой-то причине веб-розетка браузера не получает ответа (проверено в Google Chrome или Safari) и ошибок без сообщения. Затем он отключается (что, кажется, запускает обработчик $ disnect). Кажется, есть 3 x 101
перемещения веб-сокета от localhost, который не является удаленным wss: // url, который я нажимаю.
Для клиентского подключения через веб-сокет я использую subscription-transport-ws@0.9.16 от apollo (стандартные опции).
Каждый четвертый или пятый раз я вижу ошибку error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but no response was received
в браузере.
Я отправляю некоторые заголовки запросов как таковые, но не уверен, что я собираюсь что-то сделать с ними на сервере:
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Sec-WebSocket-Key: xxx
Sec-WebSocket-Protocol: graphql-ws
Sec-WebSocket-Version: 13
Upgrade: websocket
Любая помощь будет фантастической! Заранее спасибо.