Firefox135:“在加载页面时,与服务器的连接重置”
Safari18.3:“ ...服务器出乎意料地丢弃了连接”
$ nc localhost 3003
HTTP/1.1 200 OK
Content-Type: text/plain; version=0.0.4; charset=utf-8; escaping=underscores
Connection: close
Content-Length: 111
# HELP requests Number of requests received.
# TYPE requests counter
requests_total{method="Get"} 8
# EOF
let method = Method::Get;
for stream in listener.incoming() {
let mut stream = stream.unwrap();
metrics.inc_requests(method.clone());
println!("Connection established!");
let mut response_buffer = HTTP_HEADERS.to_string();
response_buffer.push_str(&format!("Content-Length: {}", response_buffer.len()));
response_buffer.push_str("\n\n");
encode(&mut response_buffer, ®istry).unwrap();
stream.write(response_buffer.as_bytes()).unwrap();
}
ahah,事实证明可以使用
shutdown
功能。我依靠插座范围范围。这也消除了内容长度的要求。这是解决方案。我敢肯定这不是特定于生锈的:
let method = Method::Get;
for stream in listener.incoming() {
let mut stream = stream.unwrap();
metrics.inc_requests(method.clone());
println!("Connection established!");
let mut response_buffer = HTTP_HEADERS.to_string();
encode(&mut response_buffer, ®istry).unwrap();
stream.write(response_buffer.as_bytes()).unwrap();
stream.shutdown(std::net::Shutdown::Both).unwrap();
}