2013-03-01 91 views
1

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

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

我想直接尝试订阅,但我也注意到,频道是在查询参数而不是我期望的路径参数。

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

谢谢!

+0

刚刚尝试过使用websockets并获得了400个状态代码握手也是如此。 – 2013-03-01 21:46:08

回答

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的“源”部分以查看该对象。这些对象结构遵循API中所有其他API调用所使用的所有相同结构。所以,当你看到一个“类型”:“文件夹”时,它将具有与你在GET/folders/ID API调用中获得的任何其他文件夹相同的结构