1

我有Elastic Bean Stalk中运行的Node.JS应用程序。我设置了Elastic Load Balancer并在其中设置了SSL。socket io不支持https;切换回轮询

我在我的Node.JS中做了socket.io。由于Nginx配置,我无法访问它。我使用.ebextensions修复了它们。

现在,当我使用我的HTTP URL访问我的套接字io时,它运行良好,它使用WebSocket协议本身。但是当我使用HTTPS时,它切换回轮询。我怎样才能解决这个问题?

是否需要做一些配置才能使其在HTTPS中工作?

更新:添加{传输:['websocket'],升级:false}后,它只发送websokcet请求。但我仍然得到错误的

WebSocket connection to 'wss://myurl.ca/socket.io/?EIO=3&transport=websocket' failed: WebSocket is closed before the connection is established. 
+1

我猜你没有粘性负载平衡。您可以将客户端配置为始终以webSocket开头,并避免需要粘性负载平衡才能正常工作的socket.io初始HTTP轮询。有关详细信息,请参见[Socket.io 1.x:仅使用WebSockets](https://stackoverflow.com/questions/28238628/socket-io-1-x-use-websockets-only/28240802#28240802)。 – jfriend00

+0

这有帮助。现在它唯一的websocket调用。但是存在这个问题。它尝试了WSS并且失败了。 WebSocket连接到'wss://www.myurl.ca/socket.io/?EIO = 3&transport = websocket'失败:WebSocket在连接建立之前关闭。 – Jocket

+1

然后,您的https凭证或https https://support.connect.io服务器代码或AWS的https设置都有问题。没有看到更多的代码和细节,我们无法做出更多的猜测。 – jfriend00

回答

0

的问题是与certificates.HTTPS证书分别设立了www.myurl.ca。而WebSocket的电话都是加www。这只是wss://myurl.ca。

这是一个小错误。但将证书更改为myurl.ca解决了问题。