上传文件时截断 Web 套接字块
Posted
技术标签:
【中文标题】上传文件时截断 Web 套接字块【英文标题】:Truncation of web socket chunk while uploading a file 【发布时间】:2014-10-11 03:16:03 【问题描述】:我已尝试搜索我面临的这个奇怪问题,但在网络上找不到任何内容。 以下是我想要做的。
从用户浏览器上传文件到运行在不同环境中的播放服务器
以下是我面临的问题。
块在到达 Play 服务器之前被截断
观察:
Chunk 是从 java 脚本在客户端正确创建的,websocket.send()
正在将正确的 chunk 传递给 Play。
在 Play 服务器上,块以 String
事件对象的形式出现,该对象被截断。
请提供可以帮助我调试和修复此问题的输入。我可以提供您想要的任何其他东西,而不是粘贴代码,因为它可以在大多数机器和网络上运行,但在少数机器和网络上失败,所以这似乎不是代码问题
PS。这个问题可以根据人们的观点有很多答案,对于所有 SO 用户,我只需要帮助可能会出错的事情,所以请不要将此标记为不合适
【问题讨论】:
【参考方案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
【讨论】:
以上是关于上传文件时截断 Web 套接字块的主要内容,如果未能解决你的问题,请参考以下文章