亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Go 通過 HTTP 發送連續數據

使用 Go 通過 HTTP 發送連續數據

Go
智慧大石 2022-01-17 18:45:41
我目前正在使用 Go 開發一個 Web 服務,它基本上接受一個請求并發送回 JSON,這很典型。然而,這個特定的 JSON 需要 10 多秒才能真正完成并返回。因為我也在創建一個依賴于 JSON 的網站,并且 JSON 內容可能會發生變化,所以我實現了一個快速生成并返回(可能更新或新的)名稱作為占位符的路由,稍后將被對應的實際值替換到名字。其背后的整個想法是網站將連接到服務,幾乎立即返回 JSON 以填充表格,然后等到要填寫的實際數據從服務返回。這是我遇到問題的地方,可能是因為我對 Go 很陌生,并且不完全理解它龐大的庫。我以前通過 HTTP 請求發回 JSON 的方法是 ResponseWriter.Write(theJSON)。但是,Write() 會終止響應,因此網站將不得不不斷地 ping 服務,這現在和將來都可能是災難性的所以,我正在尋找一些行業知識來解決我的問題。HTTP 連接可以像這樣連續,通過同一個 http 請求分段發送數據嗎?這甚至是計算或安全智能功能,還是有更好的方法來做我建議的事情?最后,Go 是否支持這樣的功能,我將如何異步處理它以優化性能?作為記錄,我的網站使用的是 React.js。
查看完整描述

3 回答

?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

我會使用 https websockets 來實現這種效果,而不是長時間持續存在的 tcp.con 甚至除此之外。請參閱 go 開發人員的 golang.org/x/net/websocket 包或 gorilla web 工具包的優秀http://www.gorillatoolkit.org/pkg/websocket以了解使用細節。您可以使用填充和較小的子單元來允許中斷和重新啟動提交 // 或一種差異協議來重寫以前提交的 JSON。我發現 websocket 即使有小的連接故障也相當穩定。


查看完整回答
反對 回復 2022-01-17
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

Go 確實有一個?;钅芰?net.TCPConn 的 SetKeepAlive


kaConn, _ := tcpkeepalive.EnableKeepAlive(conn)

kaConn.SetKeepAliveIdle(30*time.Second)

kaConn.SetKeepAliveCount(4)

kaConn.SetKeepAliveInterval(5*time.Second)


查看完整回答
反對 回復 2022-01-17
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

您可以將 restapi 用作 Web 服務,并且可以將數據作為 json 發送。因此,您可以通過通信通道連續發送數據。


查看完整回答
反對 回復 2022-01-17
  • 3 回答
  • 0 關注
  • 420 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號