問題
「TRPL」または「the book」こと、Rustの公式入門ガイド: The Rust Programming Language。
最終章(20章)の課題として簡易サーバーを作成した。
しかしサンプルコードそのままだとChromeからではページが表示されなかった(Firefoxからなら問題なく表示される)。
原著: https://doc.rust-lang.org/book/ch20-03-graceful-shutdown-and-cleanup.html
日本語訳(少し古い): https://doc.rust-jp.rs/book/second-edition/ch20-03-graceful-shutdown-and-cleanup.html
解決法
バッファサイズを増やせばChromeでも表示できるようになる。
src/bin/main.rs
fnhandle_connection(mutstream:TcpStream){letmutbuffer=[0;1024];// ここを 512 → 1024 に変更。stream.read(&mutbuffer).unwrap();// --snip--}
またこの問題と直接の関係はないが、スレッド数と接続回数(?)の上限値を増やしたほうが動作確認しやすかった。
サンプルコードそのままだと1回の接続だけでサーバーがシャットダウンしてしまう。
src/bin/main.rs
fnmain(){letlistener=TcpListener::bind("127.0.0.1:7878").unwrap();letpool=ThreadPool::new(8);// 4 → 8 に変更。forstreaminlistener.incoming().take(20){// 2 → 20 に変更。// --snip--}// --snip--}
よほど性能の低いマシンでもなければ問題なく動作するはず。
参考
https://users.rust-lang.org/t/rust-web-server-not-working-with-requests-from-chrome/34835