【问题标题】:Truncation of web socket chunk while uploading a file上传文件时截断 Web 套接字块
【发布时间】:2014-10-11 03:16:03
【问题描述】:

我已尝试搜索我面临的这个奇怪问题,但在网络上找不到任何内容。 以下是我想要做的。

从用户浏览器上传文件到运行在不同环境中的播放服务器

以下是我面临的问题。

块在到达 Play 服务器之前被截断

观察:

  • Chunk 是从 java 脚本在客户端正确创建的,websocket.send() 正在将正确的 chunk 传递给 Play。

  • 在 Play 服务器上,块以 String 事件对象的形式出现,该对象被截断。

  • 这个问题非常奇怪的是,这仅在某些机器/网络中发生,对于所有其他机器/网络,它工作正常
  • 当尝试使用不同的块大小时,据观察,对于较小的块,许多初始块被正确接收,但后来一个失败
  • 我们已尝试在某些网络上绕过防火墙和代理,以检查如果没有此类限制会发生什么,但仍然失败

请提供可以帮助我调试和修复此问题的输入。我可以提供您想要的任何其他东西,而不是粘贴代码,因为它可以在大多数机器和网络上运行,但在少数机器和网络上失败,所以这似乎不是代码问题

PS。这个问题可以根据人们的观点有很多答案,对于所有 SO 用户,我只需要帮助可能会出错的事情,所以请不要将此标记为不合适

【问题讨论】:

    标签: java javascript google-chrome playframework websocket


    【解决方案1】:

    我已经弄清楚了,问题出在谷歌浏览器的最新更新上。我从here(版本 37)下载了 chrome,它开始工作正常。

    一段时间后我才知道这个问题是因为 chrome V38 中针对单个消息的多个帧的实现更改,最初它是在单个帧中传输的,所以最终从您的服务器端实现也需要进行更改以处理相同的问题。

    我使用的是旧版本的 Play 框架,它没有这种多帧处理实现,所以它会崩溃。

    将 Play 更新到 2.2.3 后,它开始正常工作,因为他们在该版本中实现了多帧处理。下面是一些有用的链接

    Issue With Latest Chrome

    Play Changelog

    Changes for Continuation frame handling for WebSockets in Play 2.2.3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多