上传文件时截断Web套接字块

时间:2014-10-11 03:16:04

标签: java javascript google-chrome playframework websocket

我试过搜索我面临的这个奇怪的问题但在网上找不到任何东西。 以下是我想要做的事情。

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

以下是我面临的问题。

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

观察:

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

  • 在Play服务器上,该块将作为String事件对象进行截断。

  • 关于这个问题非常奇怪的是这种情况只发生在一些机器/网络上,而其他所有机器/网络都运行良好
  • 当尝试使用不同的块大小时,已经观察到对于较小的块,许多初始块被正确接收,之后一个块失败
  • 我们已经尝试绕过某些网络上的防火墙和代理,以检查如果没有这样的限制会发生什么,但它仍然失败

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

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

1 个答案:

答案 0 :(得分:0)

我已经弄清楚了,问题在于谷歌浏览器的最新更新。我从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