我很惊讶的发现Azure App Service默认不支持WebSockets。在使用之前,您需要启用设置(配置->设置->Web sockets)。
WebSockets的支持于2013年被添加,当时该服务还被称为Azure Web Sites。因此,它已不再是实验性功能。鉴于WebSockets是已经成熟的Web标准,2021年我希望它能够得到支持。
我认为Microsoft有他们自己的原因,为什么会让它处于可选择状态。了解在Azure App Service(或AWS Elastic Beanstalk)这样的设置中支持WebSockets的权衡是很有趣的:
- 是否出于安全原因?(尽管我想不出任何理由,但我可能忽略了什么)
- 它是否会给负载均衡器带来问题?(WebSocket是有状态的,与标准HTTP相比不友好代理)
- 它是否影响TCP连接的持续时间?(使检测到断开的连接更加困难)