2012-05-26 68 views
0

我真的很喜歡這個:http://services.digg.com/2.0/streamDigg的流API如何工作?

使用單個連接不斷接收數據,content-type是application/json。此外,它可以通過瀏覽器使用。這是如何實施的?看起來around有點似乎不是長輪詢,HTML5服務器發送的事件,甚至websockets。

我該如何去建設類似的東西?我可以使用哪些開源解決方案作爲起點?

感謝,

/大衛

回答

2

這只是一個塊傳輸編碼發送的字節流。基本上它只是HTTP分塊流。

由於您提到了服務器發送的事件,因此您可以將其視爲SSE而不使用特殊格式。消息是由換行符分隔的JSON對象。在服務器上,您可以像實施SSE減去格式一樣來實現。

這樣一個API的客戶端需要能夠解析這樣的數據流並在新行上分割消息。某些瀏覽器支持XMLHttpRequest上的,4,這是針對每個塊調用的,因此允許您處理流數據。

+0

嗨伊戈爾,謝謝你的迴應。在構建流媒體API的上下文中是否有任何阻止分塊傳輸編碼和SSE的原因? –

+0

當然,如果你的API沒有針對瀏覽器,你可以簡單地使用塊。在這些用例中,它們比EventSource協議更容易解析。值得考慮的另一件事是跨域通信。許多EventSource實現不支持CORS(跨源資源共享),或者只是剛剛獲得它。而在AJAX中,它隨處可見。這是另一種情況,它可能是一種選擇。 – igorw

+0

再次感謝,所以Digg API在大多數瀏覽器中作爲「頂級」文檔工作,即使它使用塊。你是說,也許它不能通過XMLHttpRequest消耗? –