google-chrome - 较新的 chrome 在使用 haproxy 服务器的 websocket 上失败

标签 google-chrome websocket socket.io haproxy

测试站点http://socket.trailsandtribulations.net

firefox:v15 运行良好。 (但是,如果流量大且网速慢,Firefox 也会经常失败(安静地)。)

chrome:以前有效,但 v21 出现 WebSocket 握手期间出错:“Connection” header 值不是“Upgrade”

但是,如果chrome在本地运行,它就可以正常工作!它破坏了我在泰国的客户端和在德国的服务器。再次强调,Firefox 始终都能正常工作,就像早期版本的 Chrome 一样。

使用 haproxy 通过 node.js 在 websocket 和通过 nginx 的 html 之间进行拆分

有什么变化导致此解决方案不起作用吗?

haproxy.cfg 现在显示测试站点链接 - 这样它始终是最新的。

最佳答案

从您的消息来看,该错误是由 Chrome 报告的,而最初我了解到该错误是由 Chrome 访问时服务器报告的。我认为作为一种解决方法,如果将“选项 httpclose”替换为“选项 http-server-close”,则可能会使问题消失。您还需要删除所有“选项forceclose”。如果只有“option http-server-close”,haproxy将不会触及响应路径中的Connection header ,这应该会让浏览器满意。但是,您必须记住,仍然存在显示错误的错误,应该将其报告给软件作者。

顺便说一句,你的超时时间太大了,最终你会出现许多死连接,这是没有意义的。如果您使用足够新的 haproxy,则可以使用“超时隧道”来设置 WS 超时,而不必处理较大的 HTTP 超时。但即便如此,1 天对于 TCP 连接来说还是太大了。您的一些用户将使用智能手机,其中 TCP 连接在切换发生前的存活时间不能超过几分钟。

关于google-chrome - 较新的 chrome 在使用 haproxy 服务器的 websocket 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12399225/

相关文章:

css - Chrome 忽略列布局中的 flex-basis

asp.net - 在本地主机(Chrome 和 FF)上,过期时间少于 1 年时未设置 cookie

iphone - Rails 和 iphone native 应用程序之间的套接字连接

express - 使用express.js和socket.io构建推送通知系统的最佳方法

javascript - 为什么这个 random() 分布看起来不对称?

javascript - Chrome 控制台访问 DOM

java - WebRTC Java 服务器?

ios - 在iOS App Store上提交的应用程序:websocket连接失败

java - socketio.emit 不起作用 netty socketio

javascript - Express 4 和 socket.io