簡體   English   中英

如何編寫一個中間層 http API 端點,當它們到達客戶端時可以 stream 結果?

[英]How to write a middle-tier http API endpoint that can stream results as they arrive to the client?

場景是這樣的——我有一個前端 web 服務器,我在 node.js 中編寫。我有一個尚未編寫的中間層內部 API 層,用任何東西編寫。 內部 API 是唯一允許與數據存儲(恰好是關系數據庫)對話的東西。

免責聲明:我是 node.js 初學者。

node.js 想要異步進行數據訪問 - 這使得像 Database.query.all 這樣的調用效率低下,因為在整個列表組裝完成之前響應回調不會啟動。 我讀過的文檔建議相反,一次將 stream 結果發送給客戶會更好。

我想知道如何編寫前端和中間層 http 內部 API,以便我可以在這里利用 node.js 的異步性。

我想問題是“我如何通過 http 訪問 stream 結構化數據”? 我想這就是我要求支持的內部 API 的功能。

我是不是該:

  • 讓前端請求一個 ID 列表,然后向后端分別發出一個請求? 聽起來很粗魯和喋喋不休,而且我看不到請求會按我想要的順序返回的保證,所以我不得不等到我把所有東西都放回前端......?
  • 讓前端針對數據頁面的內部 API 發出一系列請求,並將每個塊視為一個流段......?
  • 只為第一個屏幕的價值獲取足夠的數據,然后請求后續的塊,在它到達時將每個塊寫入列表的末尾?
  • 更聰明的東西??

(注意:請不要說“擺脫中間層,這樣你就可以直接與數據庫對話”——那不是一個選擇)

我不確定“流媒體”到底是什么意思; 從你給出的想法來看,它可以被解釋為一些HTTP 服務器推送或長輪詢技術,或者只是發出后續的 XHR 請求。

由於您使用的是節點,我推薦Socket.io ,它允許您真正將數據推送到瀏覽器,只要你想

如果您選擇使用 XHR 的 go,只需告訴瀏覽器下一步要請求什么。

如果這不適合你,並且你想使用服務器推送或長輪詢, response.write()似乎是 go 的方式。但是你可能會遇到請求超時等問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM