我一直在尝试订阅events long-polling端点。因此,首先我调用了/events的选项,并取回了一个实时服务器的url。然而,我不禁注意到url看起来像这样:http://2.realtime.services.box.net/subscribe?channel=XXX&stream_type=all
上面的url似乎建议我应该直接继续并尝试订阅该主题,跳过握手步骤。实际上,如果我尝试在http://2.realtime.services.box.net/上握手,我会得到一个400状态代码。
我考虑过尝试直接订阅,但我也注意到通道位于查询参数,而不是我所期望的路径参数。
你能澄清这一点吗?如果这真的遵循comet长轮询标准,或者是其他原因,我尝试以不同的方式来做?我应该试试WebSockets吗?
谢谢!
发布于 2013-03-09 03:02:30
您应该能够对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的"source“部分以查看对象。这些对象结构遵循API中所有其他API调用所使用的所有相同结构。因此,当您看到"type":" folder“时,它将具有与在get /folders/ID调用中获得的任何其他文件夹相同的结构
https://stackoverflow.com/questions/15167340
复制相似问题