【问题标题】:Websocket works in incognito Chrome but not in regular Chrome?Websocket 在隐身 Chrome 中工作,但在普通 Chrome 中不工作?
【发布时间】:2011-08-19 03:06:03
【问题描述】:

我编写了一个使用 websocket 的应用程序,但遇到了一个奇怪的问题。

如果我在 Chrome 中运行我的应用并尝试重新连接,它无法重新连接到 websocket。

但是,如果我使用隐身 Chrome,它每次都能正常工作。

Chrome 中的 websocket 与隐身 Chrome 之间是否存在细微差别?可能是某种缓存控制?

编辑:我正在运行 Chrome 13。抱歉,我无法提供任何示例代码,因为它会显示我的应用程序,但问题的要点是隐身 Chrome 可以每次都与我的服务器建立连接,但普通 Chrome 会成功一次,然后失败所有后续尝试。很奇怪吧?

【问题讨论】:

  • 请提供简化的代码示例。还要确保您使用的是 Chrome 13(除非您的 WebSocket 服务器支持较新的规范)
  • 尝试安装 Chrome Canary(基本上是 Chrome 15),它支持最新的 WebSocket 规范(版本 8),在此处获取 tools.google.com/dlpage/chromesxs 它将与您现有的 Chrome 13 安装并排安装。如果这解决了您的问题,那么问题可能与 Chrome 13 中较早的 WebSocket 实现有问题(这将很快在 Chrome 14 中得到修复)。
  • “重新连接”是什么意思?使用 websockets,您只需要连接一次。然后您发送(和接收)任意数量的消息,直到您明确关闭连接。如果 Incognito 在关闭之前的连接之前“重新连接”,这可能表明 Incognito 有一些特别之处。

标签: google-chrome webkit websocket


【解决方案1】:

Websockets 进行通常的 HTTP 查询以最初连接到服务器。 HTTP 查询在请求中也有 cookie。 在我的情况下,cookie 很大,并且隐身模式没有它,只有 session_id,所以在常规 Chrome 中清理 cookie 就可以了。

【讨论】:

    【解决方案2】:

    我想这与最新的 hybi 10 草案规范有关。 自 Chrome 14 起,仅支持此规范。 旧规格不再存在。

    【讨论】:

    • 隐身模式是否使用其他规范版本?
    【解决方案3】:

    我有同样的问题。这实际上可能处理您在服务器端使用的框架。我唯一的建议是不知道你的框架。确保在您使用的服务器上正确管理您正在接收和发送数据的套接字。 IE同一个socket。

    【讨论】:

      猜你喜欢
      • 2016-04-18
      • 2020-01-23
      • 2017-05-10
      • 2021-08-12
      • 2016-07-19
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多