2 回答

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
僅通過(guò)查看加密數(shù)據(jù)無(wú)法可靠地區(qū)分“正?!盚TTP 流量和 Websockets。
人們可以通過(guò)查看流量模式來(lái)嘗試做一些啟發(fā)式方法,即在哪個(gè)方向上在哪個(gè)時(shí)間傳輸了多少數(shù)據(jù)以及數(shù)據(jù)之間有多少空閑時(shí)間。這種啟發(fā)式可以基于以下假設(shè):HTTP 是一種請(qǐng)求 + 響應(yīng)協(xié)議,通常小請(qǐng)求緊隨其后是較大的響應(yīng),而 Websockets 可以顯示任意流量模式。
但任意流量模式也意味著 Websockets 也可以以請(qǐng)求 + 響應(yīng)的方式使用。(雖然包括請(qǐng)求+響應(yīng))。此外,在某些用例中,HTTP 的使用模式主要由大請(qǐng)求和小響應(yīng)組成。因此,根據(jù)應(yīng)用程序的類(lèi)型,這種啟發(fā)式方法可能會(huì)成功,也可能會(huì)失敗。

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
定義全局服務(wù)器超時(shí)始終是一個(gè)好習(xí)慣,以確保資源不會(huì)永遠(yuǎn)被鎖定。該超時(shí)不應(yīng)小于所有處理程序中最長(zhǎng)的超時(shí)。
DefaultServer = &http.Server{
Handler: http.TimeoutHandler(handler, wssTimeout, timeoutResponse),
...
}
在處理 http 和 wss 請(qǐng)求的 handler 中,我們需要?jiǎng)討B(tài)設(shè)置超時(shí)時(shí)間。
func (proxy *ProxyHttpServer) handleHttps(w http.ResponseWriter, r *http.Request) {
// Request Context is going to be cancelled if client's connection closes, the request is canceled (with HTTP/2), Server we created above time outed.
// all code down the stack should respect that ctx.
ctx := r.Context()
timeoit := httpTimeout
if itIsWSS(r) {
timeout = wssTimeout
}
ctx, cancel = cWithTimeout(ctx, timeout)
defer cancel()
// all code below to use ctx instead of context.Backgound()/TODO()
- 2 回答
- 0 關(guān)注
- 139 瀏覽
添加回答
舉報(bào)