3

我正在研究将二进制数据流式传输到浏览器中(通过 http)。我正在寻找有关执行此操作的好方法的意见。最终,我将拥有一个实时数据源,并且我想操纵这些数据并在浏览器中(实时)显示它。Firefox 是第一位的,IE 会很好……但我没那么挑剔。我有一个 Firefox 插件,可以满足我的需要,但我更喜欢用 javascript/html 编写的东西,无需用户安装任何插件即可工作。

我一直在研究 multipart/x-mixed-replace MIME/media 类型,它看起来在这个项目中可能很有用,但我想在我花钱之前听听关于更好的方法(如果有的话)的意见沿着这条路走好几个小时。

Flash 可能会完成这项工作,但我还是想避免使用插件。我想要最简单的解决方案(我们不是吗?),最好只使用 javascript/html。

我也一直在研究彗星,看看它能为我做什么。

4

5 回答 5

4

这在很大程度上取决于您要对数据做什么。我假设渲染它。

Flash 可能是最简单的解决方案。这是一个足够常见的附加组件,现在几乎每个人都应该拥有它;所以你不会冒很大的不兼容风险。

JavaScript 还没有被认为是一个很好的二进制数据处理平台——因此,该领域并没有太多的发展。我不认为你会为你想要的东西找到很多帮助。特别是当你得到渲染的时候——除非你可以每个二进制文件转换为画布脚本,因为它是 JavaScript 中唯一可用的动态图像。

IE 实际上可能是个例外,因为您可能可以使用一些 ActiveX 对象来为一些文件类型完成此操作。但是,然后您删除了大多数其他浏览器。

于 2008-12-04T20:55:26.290 回答
2

As for data streaming and socket style connections you might want to take a look at the APE (Ajax Push Engine) project. It allows you to set up a HTTP proxy that your JavaScript can connect through for true socket connections.

As for what to do with the data when it arrives, I've done a proof of concept showing how you can work with raw PNG data, parse it and render it to the browser. Check it out.

于 2009-05-21T02:53:13.680 回答
2

我以前必须用视频(即运动 jpeg)数据来做这件事。

我注意到您刚刚说的是“二进制数据”……这是不是图像数据?它是什么?

如今,multipart/x-mixed-replace 在很多浏览器中都可以正常工作。我认为它甚至可能在更高版本的 IE 中得到支持。它肯定适用于大约 5 年前我必须实现它的所有版本的 Firefox。可能也支持基于 Webkit 的浏览器,包括 Chrome 和 safari。

但是,在我看来,这实际上只适用于基于 LAN 的应用程序。原因是您要发送大量数据。而不是发送连续帧之间的差异(如果是视频),您每次都会发送整个图像。根据用户的数量,这也可能给服务器带来沉重的带宽负担。

因此,虽然 multipart/x-mixed-replace 是迄今为止最容易实现的,但它不一定是最合适的解决方案。同样,它取决于您的原始数据类型。

对于视频,理论上你可以用 javascript 写一些东西来做。事实上,如果你用谷歌搜索 JavaScript 视频播放器,你可以找到一些。我怀疑它们的速度非常快,并且可能会给客户端机器带来沉重的负担。不过,它似乎确实可行。

所以你的选择是:1)内容类型混合替换 2)下载插件本机浏览器插件(最快最有效)基于 Flash 或 silverlight 3)基于 Javascript 的播放器

如果它是您想要的视频 最后一个选项,它处于最前沿的是 4) 基于 HTML5 的视频。 http://www.html5video.org/ 由于标准仍在批准中并且浏览器支持有限,我现在不推荐它。

于 2011-02-14T10:26:12.633 回答
1

You can use Base64 to convert the binary to text and send that to the browser. With IE you can convert it directly to binary, but I'm not sure if you can do it with Firefox and others. I did see jscripts for Base64 enflate/deflate and a script named base64.js which probably does the conversion as well.

However, you are probably better off converting the binary data into JSON and using AJAX to transfer the data and then processing it as a javascript object in the browser. The web server would be responsible for acquiring the data and converting it to JSON, so you should be able to process the binary regardless of which programming language you are using.

于 2008-12-04T21:28:37.890 回答
1

我通常会避免使用 multipart/x-mixed-replace,因为它具有相当粗略的浏览器支持。我知道我的相机的 multipart/x-mixed-replace 在 IE 或更新版本的 Firefox 上不起作用(尽管显然有一个配置可以改变它)。

我认为小型 Flash 应用程序可能是您的最佳选择之一。

于 2008-12-04T22:10:22.067 回答