Olá. Estou tentando criar uma conexão como esta: socket.io-client -> AWS Gateway API.
Ao tentar se conectar do cliente socket.io a uma API do AWS Gateway, a conexão não pode ser estabelecida.
Ele bloqueia com um status '101 comutação de protocolos' por alguns segundos, em seguida, lança o evento 'desconectado' e tenta restabelecer a conexão, e o processo se repete infinitamente.
Isso não acontece com WebSockets nativos ou biblioteca 'ws', tudo se conecta como deveria.
Acho que o problema tem a ver com como os lados do cliente e servidor socket.io interagem entre si, trocando certas mensagens que podem não ser geradas no lado AWS das coisas.
Portanto, a minha pergunta é: é mesmo possível estabelecer uma conexão como esta sem usar proxies:
socket.io-client -> AWS Api Gateway -> socket.io(node.js)
,
ou sempre tem que ser Socket.io-client -> socket.io(node.js)
?
A documentação do Amazon AWS foi usada para configurar o gateway: https://aws.amazon.com/blogs/compute/announcing-websocket-apis-in-amazon-api-gateway/
Ele usa as rotas standart $ connect, $ disconnect e $ default, mas em vez de lambda seu backend nodejs. O problema, porém, é apenas do lado do cliente.
@Sairyss existe uma atualização sobre isso?
@Sairyss existe uma atualização sobre isso?
@JerryLeeCS Acabei usando WebSockets nativos no lado do cliente e $ connect, $ disconnect e $ default routes no lado do back-end. Não encontrei nenhuma solução para fazer funcionar com Socket.io. Parece que as conexões Socket.io do front-end não são suportadas pela API do AWS Gateway, ela apenas se recusa a se conectar.
Parece que é possível: https://stackoverflow.com/a/56364967
@darrachequesne Se eu li esse link / post corretamente ele está usando um servidor EC2 executando o servidor SocketIO? Não está um pouco claro. Estou no mesmo barco - ws
funciona bem, mas não soquete io - nenhuma conexão. Usando o servidor websocket padrão fornecido pelo gateway aws api (por meio de serverless).
Comentários muito úteis
@JerryLeeCS Acabei usando WebSockets nativos no lado do cliente e $ connect, $ disconnect e $ default routes no lado do back-end. Não encontrei nenhuma solução para fazer funcionar com Socket.io. Parece que as conexões Socket.io do front-end não são suportadas pela API do AWS Gateway, ela apenas se recusa a se conectar.