Почему я не могу загрузить страницу из образца документации Actix? - PullRequest
1 голос
/ 07 января 2020

Я изучаю фреймворк Actix. В документации есть образец :

use actix_rt::System;
use actix_web::{web, App, HttpResponse, HttpServer};
use std::sync::mpsc;
use std::thread;

#[actix_rt::main]
async fn main() {
    let (tx, rx) = mpsc::channel();

    thread::spawn(move || {
        let sys = System::new("http-server");

        let srv = HttpServer::new(|| App::new().route("/", web::get().to(|| HttpResponse::Ok())))
            .bind("127.0.0.1:8088")?
            .shutdown_timeout(60) // <- Set shutdown timeout to 60 seconds
            .run();

        let _ = tx.send(srv);
        sys.run()
    });

    let srv = rx.recv().unwrap();

    // pause accepting new connections
    srv.pause().await;
    // resume accepting new connections
    srv.resume().await;
    // stop server
    srv.stop(true).await;
}

У меня нет ошибок после компиляции этого кода:

enter image description here

Но я не могу открыть страницу в своем браузере:

enter image description here

Что я пропустил и почему страница не открывается в моем браузере?

1 Ответ

1 голос
/ 07 января 2020

Этот раздел является примером того, как управлять сервером, работающим в ранее созданном потоке. Вы можете приостановить, возобновить и остановить сервер изящно. Эти строки выполняют эти три действия. В конце сервер останавливается.

    let srv = rx.recv().unwrap();

    // pause accepting new connections
    srv.pause().await;
    // resume accepting new connections
    srv.resume().await;
    // stop server
    srv.stop(true).await;

Это делает этот пример сервером, который отключается в конце фрагмента. Одним небольшим изменением для запуска этого фрагмента на неопределенный срок является изменение:

    let srv = rx.recv().unwrap();

    // wait for any incoming connections
    srv.await;

, что я бы не рекомендовал. Существуют и другие примеры, в частности в репозитории actix / examples , которые, вероятно, были бы более подходящими для начала работы по структурированию сервера actix.

...