mirror of
https://github.com/chatmail/core.git
synced 2026-05-07 08:56:30 +03:00
use multi-threaded runtime in JSON-RPC webserver
This commit is contained in:
committed by
Simon Laux
parent
6fee4fd878
commit
bdd4aa0f10
@@ -8,17 +8,22 @@ mod api;
|
|||||||
use api::events::event_to_json_rpc_notification;
|
use api::events::event_to_json_rpc_notification;
|
||||||
use api::{Accounts, CommandApi};
|
use api::{Accounts, CommandApi};
|
||||||
|
|
||||||
#[tokio::main]
|
const DEFAULT_PORT: u16 = 20808;
|
||||||
|
|
||||||
|
#[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")
|
||||||
|
.map(|port| port.parse::<u16>().expect("DC_PORT must be a number"))
|
||||||
|
.unwrap_or(DEFAULT_PORT);
|
||||||
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()));
|
||||||
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;
|
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)
|
||||||
|
|||||||
Reference in New Issue
Block a user