2

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

火狐:v15 工作正常。(但是,如果大量的流量和缓慢的网络,firefox 也会经常失败(安静地)。)

chrome:以前工作过,但 v21 得到了Error during WebSocket handshake: 'Connection' header value is not 'Upgrade'

但是,如果chrome在本地运行,它工作正常!它在我在泰国的客户和德国的服务器上中断。再一次,Firefox 一直都能正常工作,就像早期版本的 chrome 一样。

用于在 websockets via和 html via之间进行haproxy拆分node.jsnginx

有什么改变使这个解决方案不起作用?

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

4

2 回答 2

1

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

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

于 2012-09-13T07:02:32.833 回答
1

firefoxno-cache在请求 websocket 更新时使用;这个版本的chrome没有。请参阅http://code.google.com/p/chromium/issues/detail?id=148908&thanks=148908&ts=1347523876

对于某些代理来说,这显然是必要的

另外,有关相关问题,请参阅https://github.com/sockjs/sockjs-node/pull/88

于 2012-09-26T09:05:46.387 回答