Desktop Safari websockets 在连接时挂起。所有其他人(包括 iOS)工作
Desktop Safari websockets hangs on connection. All others (including iOS) work
我的 websocket 连接有效:
- 在桌面 Chrome、桌面 Safari 和 iOS
上的本地主机上进行测试时
- 在桌面上进行生产测试时 Chrome 和 iOS。
它不起作用:
- 在 Desktop Safari 上进行生产测试时
浏览器中没有控制台错误。我可以看到 websocket 已创建,但它从不在 Desktop Safari 上触发“打开”事件。在服务器端,除了 Desktop Safari 以外的任何地方都可以正常连接,我在那里看不到任何东西。
websocket 与来源域完全相同,并且都使用安全连接 (https/wss)
生产中有很多活动部件(例如负载平衡器)。我查看并配置了生产中每一层的“粘性”和 TLS 版本等内容。
同样,它适用于大多数地方。
我认为一定是 TLS、CORS 等原因导致了故障,但我还没有完全理解。
这是在 iOS 上发生的情况(在 Chrome 桌面等方面大致相同):
这是在 Mac 上的 Desktop Safari 中发生的情况:
嗯。经过几个小时的旋转,我解决了它:
AWS Load Balancer 属性中有一个名为“客户端端口保留”的设置。一旦我检查了这个,websockets 开始从 Desktop Safari 流动:
我的 websocket 连接有效:
- 在桌面 Chrome、桌面 Safari 和 iOS 上的本地主机上进行测试时
- 在桌面上进行生产测试时 Chrome 和 iOS。
它不起作用:
- 在 Desktop Safari 上进行生产测试时
浏览器中没有控制台错误。我可以看到 websocket 已创建,但它从不在 Desktop Safari 上触发“打开”事件。在服务器端,除了 Desktop Safari 以外的任何地方都可以正常连接,我在那里看不到任何东西。
websocket 与来源域完全相同,并且都使用安全连接 (https/wss)
生产中有很多活动部件(例如负载平衡器)。我查看并配置了生产中每一层的“粘性”和 TLS 版本等内容。
同样,它适用于大多数地方。
我认为一定是 TLS、CORS 等原因导致了故障,但我还没有完全理解。
这是在 iOS 上发生的情况(在 Chrome 桌面等方面大致相同):
这是在 Mac 上的 Desktop Safari 中发生的情况:
嗯。经过几个小时的旋转,我解决了它:
AWS Load Balancer 属性中有一个名为“客户端端口保留”的设置。一旦我检查了这个,websockets 开始从 Desktop Safari 流动: