[英]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.