Hola. Estoy intentando crear una conexión como esta: socket.io-client -> API de AWS Gateway.
Al intentar conectarse desde el cliente socket.io a una API de AWS Gateway, no se puede establecer la conexión.
Se atasca con un estado '101 protocolos de conmutación' durante unos segundos, luego lanza un evento 'desconectado' e intenta restablecer la conexión, y el proceso se repite infinitamente.
Sin embargo, esto no sucede con los WebSockets nativos o la biblioteca 'ws', todo se conecta como debería.
Creo que el problema tiene algo que ver con la forma en que los lados del cliente y del servidor de socket.io interactúan entre sí al intercambiar ciertos mensajes que pueden no generarse en el lado de AWS.
Entonces mi pregunta es: ¿es incluso posible establecer una conexión como esta sin usar proxies?
socket.io-client -> AWS Api Gateway -> socket.io(node.js)
,
o siempre tiene que ser Socket.io-client -> socket.io(node.js)
?
Se utilizó la documentación de Amazon AWS para configurar la puerta de enlace: https://aws.amazon.com/blogs/compute/announcing-websocket-apis-in-amazon-api-gateway/
Utiliza standart $ connect, $ desconectar y $ rutas predeterminadas, pero en lugar de lambda su backend de nodejs. Sin embargo, el problema es solo del lado del cliente.
@Sairyss, ¿hay alguna actualización sobre esto?
@Sairyss, ¿hay alguna actualización sobre esto?
@JerryLeeCS Terminé usando WebSockets nativos en el lado del cliente y $ connect, $ desconectar y $ rutas predeterminadas en el lado del backend. No encontré ninguna solución para que funcione con Socket.io. Parece que las conexiones de Socket.io desde la interfaz no son compatibles con la API de AWS Gateway, simplemente se niega a conectarse.
Parece que es posible: https://stackoverflow.com/a/56364967
@darrachequesne Si leo ese enlace / entonces ws
funciona bien pero no socket io - no hay conexión en absoluto. Usando el servidor websocket predeterminado proporcionado por la puerta de enlace aws api (sin servidor).
Comentario más útil
@JerryLeeCS Terminé usando WebSockets nativos en el lado del cliente y $ connect, $ desconectar y $ rutas predeterminadas en el lado del backend. No encontré ninguna solución para que funcione con Socket.io. Parece que las conexiones de Socket.io desde la interfaz no son compatibles con la API de AWS Gateway, simplemente se niega a conectarse.