use multi-threaded runtime in JSON-RPC webserver

This commit is contained in:
Franz Heinzmann (Frando)
2022-06-29 21:21:58 +02:00
committed by Simon Laux
parent 6fee4fd878
commit bdd4aa0f10

View File

@@ -8,17 +8,22 @@ mod api;
use api::events::event_to_json_rpc_notification;
use api::{Accounts, CommandApi};
#[tokio::main]
const DEFAULT_PORT: u16 = 20808;
#[tokio::main(flavor = "multi_thread")]
async fn main() -> Result<(), std::io::Error> {
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 port = std::env::var("DC_PORT")
.map(|port| port.parse::<u16>().expect("DC_PORT must be a number"))
.unwrap_or(DEFAULT_PORT);
log::info!("Starting with accounts directory `{path}`.");
let accounts = Accounts::new(PathBuf::from(&path)).await.unwrap();
let state = CommandApi::new(accounts);
let app = Router::new()
.route("/ws", get(handler))
.layer(Extension(state.clone()));
let addr = SocketAddr::from(([127, 0, 0, 1], 20808));
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);
axum::Server::bind(&addr)