我一直在尝试订阅事件长轮询端点。所以首先我做了一个选项调用/ events并找回了实时服务器的url。但是,我不禁注意到网址如下所示:http://2.realtime.services.box.net/subscribe?channel=XXX&stream_type=all
上面的网址似乎暗示我应该直接继续尝试订阅跳过握手步骤的主题。实际上,如果我尝试在http://2.realtime.services.box.net/握手,我会收到400状态代码。
我想过尝试直接订阅,但我也注意到频道是查询参数而不是路径参数,正如我所期望的那样。
你可以澄清一下吗?如果这真的遵循彗星长轮询标准还是别的什么呢?我尝试以不同方式做到这一点?我应该尝试使用WebSockets吗?谢谢!
答案 0 :(得分:0)
您应该能够对OPTIONS调用响应中的URL进行HTTP GET调用。一旦有活动,它将以新的变化作出回应。
不应该有任何魔术“订阅”或“websockets”请求。只需使用标准HTTP GET即可。
每次打电话都会打开一个HTTP连接,如果您的帐户发生任何事情,您会看到{“message”:“new_change”} JSON有效负载沿着管道向下流动。如果没有任何反应,您的连接将暂停并关闭,否则您将收到400错误。
只要看到{“message”:“new_change”},就会发出信号,表示是时候从您收到的最新事件中使用stream_position命中/ events API。
有许多类型的事件,您可以通过“event_type”以不同方式进行解析。大多数事件类型都有足够的信息将它们作为delta或diff应用到事件适用的项目的现有副本上。每个事件都有一个stream_position,它将指示它在时间流连续体中的位置。
查找JSON的“source”部分以查看对象。这些对象结构遵循API中所有其他API调用所使用的所有相同结构。因此,当您看到“类型”:“文件夹”时,它将具有与您在GET / folders / ID API调用中获得的任何其他文件夹相同的结构