我一直在研究multipart/x-mixed-replace MIME/media类型,看起来它可能对这个项目有用,但在我花费太多时间之前,我想听听更好的方法(如果有的话)。
Flash可能可以完成工作,但再次强调,我想避免使用插件。我希望拥有尽可能简单的解决方案(我们都是这样想吧?),最好只用javascript/html。
我还研究了Comet,看看它能为我做什么。
我以前曾经处理过视频(即动态jpeg)数据。
我注意到你刚才说的是“二进制数据”……这是图像数据还是其他数据?
multipart/x-mixed-replace在现今很多浏览器中运行良好。我认为甚至在IE的后续版本中也支持。它在大约5年前的所有firefox版本中肯定可以使用,Webkit内核的浏览器也可能支持,包括Chrome和safari。
然而,依我看,这只适用于基于LAN的应用程序。原因是你正在发送大量数据。你将每次发送整个图像,而不是发送连续帧之间的差异(如果是视频)。这取决于用户数量,这也可能对服务器的带宽造成沉重负担。
因此,虽然multipart/x-mixed-replace是迄今为止最简单的实现方式,但不一定是最合适的解决方案。再次强调,这取决于您的原始数据类型。
对于视频,理论上您可以编写JavaScript代码来处理。事实上,如果您搜索JavaScript视频播放器,您可以找到一些。我怀疑它们并不特别快,并且可能会给客户端机器带来沉重负担。不过,似乎确实可以做到。
因此,您的选择是: 1)内容类型为mixed-replace 2)下载插件 本机浏览器插件(最快,最有效) 基于Flash或silverlight的 3)基于JavaScript的播放器
如果您想要视频,则最后一个选项就是处于前沿的 4)基于HTML5的视频。http://www.html5video.org/ 由于标准仍在制定中,而且浏览器支持有限,我不建议现在使用它。
您可以使用Base64将二进制转换为文本并将其发送到浏览器。在IE中,您可以直接将其转换为二进制,但我不确定Firefox和其他浏览器是否可以这样做。我看到了一些用于Base64压缩/解压的jscripts以及一个名为base64.js的脚本,该脚本可能也进行了转换。
然而,您最好将二进制数据转换为JSON,并使用AJAX传输数据,然后在浏览器中将其处理为javascript对象。Web服务器将负责获取数据并将其转换为JSON,因此无论您使用哪种编程语言,都应该能够处理二进制数据。
通常我会避免使用multipart/x-mixed-replace,因为它的浏览器支持相当不稳定。我知道我的相机的multipart/x-mixed-replace在IE或新版本的Firefox上无法工作(尽管显然有一种配置可以改变这种情况)。
我认为一个小型的Flash应用程序可能是你最好的选择之一。