上载文件时截断web套接字块



我试着搜索我面临的这个奇怪的问题,但在网上找不到任何东西。以下是我正在努力做的事情。

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

以下是我面临的问题。

区块在到达播放服务器之前被截断

观察结果:

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

  • 在Play服务器上,区块是作为String事件对象来的,它被截断了。

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

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

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

我已经弄清楚了,问题是谷歌chrome的最新更新。我从这里下载了chrome(版本37),它开始运行良好。

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

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

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

最新Chrome 问题

播放更改日志

Play 2.2.3 中WebSockets的Continuation帧处理的更改

相关内容

  • 没有找到相关文章

最新更新