Я пишу простой HTTP-запрос, используя стандартные библиотеки net
модуль:
use std::io::prelude::*;
use std::net;
fn main() -> std::io::Result<()> {
let request =
b"GET / HTTP/1.1
Host: localhost:8080
";
let mut response = String::new();
print!("Connecting...");
let mut stream = net::TcpStream::connect("127.0.0.1:8080")
.expect("Cannot connect to server");
println!("Connected!");
print!("Writing...");
stream.write(request)
.expect("Error writing");
println!("Written!");
print!("Reading...");
stream.read_to_string(&mut response)
.expect("Error reading");
println!("Read!");
println!("\nResponse:\n{}", response);
Ok(())
}
У меня есть простой Express веб-сервер, работающий локально на localhost:8080
.
const express = require('express')
const app = express()
const port = 8080
app.get('/', (req, res) => {
console.time('/')
res.send('ok')
console.timeEnd('/')
})
app.listen(port, () => console.log(`Server on ${port}`))
Когда я запускаю программу, между печатью Written!
и Reading...
наступает вторая или две паузы.Почему возникает эта пауза, когда кажется, что нет ничего для приостановки выполнения?
Вывод сервера:
/: 5.168ms
Вывод ржавчины:
Connecting...Connected!
Writing...Written! // PAUSES HERE AT EOL!
Reading...Read!
Response:
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 2
ETag: W/"2-eoX0dku9ba8cNUXvu/DyeabcC+s"
Date: Thu, 06 Dec 2018 22:32:47 GMT
Connection: keep-alive
ok