2016-07-07 118 views
0

我想實現一個Web服務器處理大型查詢。單個請求的響應是巨大的。因此,我不想一次性發送大量回復,而是希望將其分成許多部分,然後單獨發送。比如我有一個數組元素,而不是發送一個包含整個數組的響應,我想發送的響應只包含單個元素。Golang一個請求多個響應

我在這裏有什麼選擇? Ajax似乎無法處理這種工作。我必須使用socket,websocket嗎?流式響應怎麼樣?

我正在使用golang + angular,推薦使用任何庫或資源?

+1

你必須繼續提出請求。一個網絡服務器不能只是發送數據給客戶端,除非你有像一個不斷開放的websocket這樣的東西。我會說,你想要實現的是pagenation。在請求中,添加偏移量和限制的查詢參數。讓客戶端迭代地發出請求,直到沒有數據剩餘爲止,按每個請求的限制增加偏移量。後端應該總是返回一個數組,當給定偏移量處沒有數據時,數組應該是空的,通知客戶端它已完成對數據的分頁。 – evanmcdonnal

+0

您也可以使用返回數組的長度來知道何時完成。如果長度<限制,那麼你知道你得到了其餘的結果,你可以停止提出請求。 – evanmcdonnal

+1

是的,分頁是要走的路,否則在數據準備就緒的時候使用websockets並播放到房間。如果你想使用套接字,那麼看看socket.io。在套接字上分頁似乎也是一種選擇,因爲您可以簡單地使用虛擬獲取和發佈請求,而不是實際的東西。 – ishaan

回答

0

我正在使用beego,並在後端部分使用[] map [string] interface {}數據類型來處理大數據。它響應多個可以角度處理的對象。