【问题标题】:How does Digg's streaming API work?Digg 的流 API 是如何工作的?
【发布时间】:2012-06-01 19:50:49
【问题描述】:

我真的很喜欢这个:http://services.digg.com/2.0/stream

使用单个连接连续接收数据,内容类型为 application/json。此外,它可以由浏览器使用。这是如何实施的?稍微看一下around,它似乎不是长轮询、HTML5 服务器发送的事件,甚至不是 websocket。

我将如何构建这样的东西?是否有任何开源解决方案可供我作为起点?

谢谢,

/大卫

【问题讨论】:

    标签: api streaming long-polling digg server-sent-events


    【解决方案1】:

    它只是一个使用分块传输编码传输的字节流。基本上它只是 HTTP 分块流。

    由于您提到了服务器发送的事件,您可以将其视为没有特殊格式的 SSE。消息是由换行符分隔的 JSON 对象。在服务器上,您可以采用与实现 SSE 减去格式相同的方式来实现这一点。

    此类 API 的客户端需要能够解析此类数据流并在换行符上拆分消息。一些浏览器支持4 上的4readyState,每个块都会调用它,从而允许您处理流数据。

    【讨论】:

    • 您好,伊戈尔,感谢您的回复。在构建流式 API 的背景下,是否有任何反对分块传输编码和 SSE 的理由?
    • 当然,如果您的 API 不针对浏览器,您可以简单地使用块。在这些用例中,它们比 EventSource 协议更容易解析。另一件值得考虑的事情是跨域通信。许多 EventSource 实现不支持 CORS(跨域资源共享),或者只是获得了它。而对于 AJAX,它在任何地方都受支持。这是另一种情况,它可能是一种选择。
    • 再次感谢,因此 Digg API 在大多数浏览器中作为“顶级”文档工作,即使它使用块。你是说可能不能通过 XMLHttpRequest 消费?
    猜你喜欢
    • 2011-11-12
    • 2018-01-12
    • 1970-01-01
    • 2014-06-19
    • 2012-09-02
    • 2018-02-03
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多