mirror of
https://github.com/chatmail/core.git
synced 2026-05-08 09:26:29 +03:00
don't wait for IO on webserver start
This commit is contained in:
committed by
Simon Laux
parent
2f00b098ac
commit
e3fa42fe88
@@ -13,6 +13,7 @@ const DEFAULT_PORT: u16 = 20808;
|
|||||||
#[tokio::main(flavor = "multi_thread")]
|
#[tokio::main(flavor = "multi_thread")]
|
||||||
async fn main() -> Result<(), std::io::Error> {
|
async fn main() -> Result<(), std::io::Error> {
|
||||||
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
|
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
|
||||||
|
|
||||||
let path = std::env::var("DC_ACCOUNTS_PATH").unwrap_or_else(|_| "./accounts".to_string());
|
let path = std::env::var("DC_ACCOUNTS_PATH").unwrap_or_else(|_| "./accounts".to_string());
|
||||||
let port = std::env::var("DC_PORT")
|
let port = std::env::var("DC_PORT")
|
||||||
.map(|port| port.parse::<u16>().expect("DC_PORT must be a number"))
|
.map(|port| port.parse::<u16>().expect("DC_PORT must be a number"))
|
||||||
@@ -20,11 +21,16 @@ async fn main() -> Result<(), std::io::Error> {
|
|||||||
log::info!("Starting with accounts directory `{path}`.");
|
log::info!("Starting with accounts directory `{path}`.");
|
||||||
let accounts = Accounts::new(PathBuf::from(&path)).await.unwrap();
|
let accounts = Accounts::new(PathBuf::from(&path)).await.unwrap();
|
||||||
let state = CommandApi::new(accounts);
|
let state = CommandApi::new(accounts);
|
||||||
|
|
||||||
let app = Router::new()
|
let app = Router::new()
|
||||||
.route("/ws", get(handler))
|
.route("/ws", get(handler))
|
||||||
.layer(Extension(state.clone()));
|
.layer(Extension(state.clone()));
|
||||||
|
|
||||||
|
tokio::spawn(async move {
|
||||||
|
state.accounts.read().await.start_io().await;
|
||||||
|
});
|
||||||
|
|
||||||
let addr = SocketAddr::from(([127, 0, 0, 1], port));
|
let addr = SocketAddr::from(([127, 0, 0, 1], port));
|
||||||
state.accounts.read().await.start_io().await;
|
|
||||||
log::info!("JSON-RPC WebSocket server listening on {}", addr);
|
log::info!("JSON-RPC WebSocket server listening on {}", addr);
|
||||||
axum::Server::bind(&addr)
|
axum::Server::bind(&addr)
|
||||||
.serve(app.into_make_service())
|
.serve(app.into_make_service())
|
||||||
|
|||||||
Reference in New Issue
Block a user