1

我一直在尝试订阅事件长轮询端点。因此,首先我对 /events 进行了选项调用,并取回了实时服务器的 url。但是,我不禁注意到网址看起来像这样:http: //2.realtime.services.box.net/subscribe ?channel=XXX&stream_type=all

上面的网址似乎暗示我应该直接继续尝试订阅跳过握手步骤的主题。实际上,如果我尝试在http://2.realtime.services.box.net/上握手,我会得到一个 400 状态码。

我考虑过尝试直接订阅,但我也注意到该频道位于查询参数而不是路径参数,正如我所期望的那样。

你能澄清一下吗?如果这真的遵循彗星长轮询标准,还是其他原因,我尝试以不同的方式做到这一点?我应该尝试 WebSockets 吗?

谢谢!

4

1 回答 1

0

您应该能够对 OPTIONS 调用的响应中的 URL 进行 HTTP GET 调用。一旦事件可用,它将以新的更改响应。

不需要任何神奇的“订阅”或“websockets”请求。只需使用标准的 HTTP GET。

每次调用时,您都将打开一个 HTTP 连接,如果您的帐户发生任何事情,您将看到 {"message":"new_change"} JSON 有效负载流下管道。如果没有任何反应,您的连接将超时并关闭,否则您将收到 400 错误。

一旦您看到 {"message":"new_change"},这就是您的信号,表明是时候从您收到的最新事件中使用 stream_position 访问 /events API了。

有许多类型的事件,您可以通过它们的“event_type”进行不同的解析。大多数事件类型中都有足够的信息,可以将它们作为增量或差异应用到事件适用的项目的现有副本上。每个事件都会有一个 stream_position 来指示它在时间流连续体中的位置。

查找 JSON 的“源”部分以查看对象。这些对象结构遵循我们 API 中所有其他 API 调用使用的所有相同结构。因此,当您看到 "type": "folder" 时,它将与您在 GET /folders/ID API 调用中获得的任何其他文件夹具有相同的结构

于 2013-03-08T19:02:29.860 回答