簡體   English   中英

Netty:如果它是一個“保持活躍”的連接,我應該關閉頻道嗎?

[英]Netty: Should I close the Channel if it's a 'keep-alive' connection?

我正在用Netty編寫一個HTTP服務器。 我在創建服務器引導程序時設置了keep-alive選項。 bootstrap.setOption("child.keepAlive", true); 每次寫HTTP響應時,我都會設置keep-alive標頭並在寫入響應后關閉通道。

rep.setHeader("Connection", "keep-alive");
channel.write(rep).addListener(ChannelFutureListener.CLOSE);

我不確定我是否應該關閉頻道。

假設您正在編寫HTTP 1.1服務器,則應該在發送響應后默認保持連接處於打開狀態。 如果由於某種原因,你決定關閉它,你應該包括

Connection: close

在回應中。

注意

bootstrap.setOption("child.keepAlive", true);

打開套接字上的keepalive選項,與HTTP無關; 相反,它是一種監視機制,以便在沒有“真實”流量的情況下檢測斷開的連接。

請注意,您還需要指定內容的長度:

  response.headers().set(CONTENT_LENGTH, response.content().readableBytes());

這樣接收者就可以找出消息的結束位置。 否則,接收將繼續等待消息。

而且,要清楚,你不應該寫“.addListener(ChannelFutureListener.CLOSE);” 如果您希望您的連接保持打開狀態。

暫無
暫無

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

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