javascript - 我可以使用 JavaScript、Flash 或 Silverlight 通过 HTTP 接收流吗?

标签 javascript http streaming

我正在使用 80 端口上的 http 制作实时通知机制的原型(prototype)。该项目的目的是允许 Flash 应用程序快速响应远程服务器上的事件(特别是接下来连接到电话的呼入电话到计算机。)轮询是一种方法,但速度太慢。目前我使用套接字连接来获取服务器上事件的低延迟通知,这种方法运行良好但对防火墙不友好。我不想在客户端上安装除 Flash 或 Silverlight 之外的任何东西。浏览器的交叉兼容性不是问题 - 在此应用程序中,我可以指定客户端使用的浏览器,但首选 IE。

我在 .NET 中创建了一个服务器 HttpHandler,它从不关闭连接并通过将字节写入 http 响应流(ConnectedClientContext.Response.OutputStream.Write 等)将“事件”发送到客户端,我有一个可以正常读取这些消息的 .NET 客户端应用程序。

我的问题:

我能否在字节使用 JavaScript、Flash 或 Silverlight 到达时通过 HTTP 从服务器接收字节?到目前为止,我只能找到一种方法来获得“下载进度”的通知,并且在响应关闭之前不会获得实际的字节 - 我想要它们到达。

最好的问候,

丹尼尔

最佳答案

我不了解 Flash,但在 Javascript(您指的是浏览器)和 Silverlight 中,您几乎只能使用 http 协议(protocol)。

您可以使用 AJAX Http Streaming pattern .与您正在尝试的不同的基本思想是,一旦数据可用,未完成的请求就会结束,并且会立即异步启动一个新请求,这意味着您的客户端会处理新到达的数据。

Silverlight 为您提供了更多选择,因为 HTTP 堆栈是纯异步的,但您可以通过将 HttpWebRequest.AllowReadStreamBuffering 设置为 来在数据开始到达时立即处理流错误。 (与始终缓冲的 XmlHttpRequest 不同)。

关于javascript - 我可以使用 JavaScript、Flash 或 Silverlight 通过 HTTP 接收流吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/438965/

相关文章:

javascript - 使用包含选择器在多列中搜索

javascript - 如何在浏览器打开的选项卡中使用 ADB 注入(inject) javascript 代码?

javascript - IE>10浏览器中通过js获取之前的URL

scala - 如何停止 Spark Streaming

javascript - 检测 HTML5 音频流何时中断或暂停

javascript - 在 asyncStorage 中存储数组状态对象

ajax - 以批处理形式在angularjs中调用HTTP请求?

javascript - 是否可以防止在每个 HTTP 请求中发送 cookie?

ajax - 通过 CORS 使用 Ajax 请求在浏览器上设置 Cookie

ios - 如何使用 VLC 从 iOS 设备广播本地视频并通过同一 WiFi 网络中的其他 iOS 设备接收视频流?