【问题标题】:How to Stream data from WebAPI method to a JavaScript client如何将数据从 WebAPI 方法流式传输到 JavaScript 客户端
【发布时间】:2013-05-10 14:31:51
【问题描述】:

我有一个用 ASP.Net WebAPI 编写的服务方法:http://diningphilospher.azurewebsites.net/api/dining?i=12

JavaScript 客户端获取响应并将其可视化here

但用餐哲学家问题的本质是我永远不知道何时会发生死锁或饥饿。因此,我不想通过请求/响应来流式传输数据,而客户端 JavaScript 则以异步方式读取我假设为 JSON 的数据。目前有几篇文章将我引向 WebAPI 中的changing the default buffer limit,因此您可以获得类似流式传输的行为。

还有哪些其他(简单或有效的)方法可以实现上述行为。

【问题讨论】:

    标签: javascript json asp.net-web-api streaming


    【解决方案1】:

    您可以从 ASP.NET Web API 返回 PushStreamContent 并在客户端使用服务器发送事件 (SSE) JavaScript API。查看 Henrik 的 blog 中的推送内容部分。另请参阅Strathweb。关于后一种实现,我不确定的一件事是 ConcurrentQueue 的使用。 Henrik 的实现使用 ConcurrentDictionary,它允许您从与退出的客户端对应的字典中删除 StreamWriter 对象,在我看来,使用 ConcurrentQueue 很难实现。

    此外,Strathweb 实现使用 KO。如果您不喜欢使用 KO,则不必使用。 SSE JavaScript API 与 KO 无关。

    顺便说一句,IE 9 或更低版本不支持 SSE。

    要考虑的另一件事是横向扩展选项。负载平衡将是有问题的,从某种意义上说,负载可能不会均匀分布,因为客户端与它们首先命中的服务器(或 Web 角色)相关联。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      • 2018-07-01
      • 2020-06-21
      • 2015-11-29
      • 2018-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多