reworked the chat layout and fixed a rate limiting mistake

This commit is contained in:
2025-12-28 20:29:13 +01:00
parent e27b4257fe
commit 59fd5b13b8
3 changed files with 19 additions and 8 deletions

1
Cargo.lock generated
View File

@@ -2363,6 +2363,7 @@ dependencies = [
"pin-project-lite", "pin-project-lite",
"tower-layer", "tower-layer",
"tower-service", "tower-service",
"tracing",
] ]
[[package]] [[package]]

View File

@@ -15,7 +15,7 @@ serde = { version = "1.0.219", features = ["derive"] }
serde_json = "1.0.143" serde_json = "1.0.143"
sqlx = { version = "0.8.6", features = ["postgres", "runtime-tokio-native-tls", "macros", "uuid", "chrono"] } sqlx = { version = "0.8.6", features = ["postgres", "runtime-tokio-native-tls", "macros", "uuid", "chrono"] }
tokio = { version = "1.47.1", features = ["rt-multi-thread", "macros"] } tokio = { version = "1.47.1", features = ["rt-multi-thread", "macros"] }
tower-http = { version = "0.6.6", features = ["cors", "limit"] } tower-http = { version = "0.6.6", features = ["cors", "limit", "trace"] }
tower_governor = "0.8.0" tower_governor = "0.8.0"
tracing = "0.1.41" tracing = "0.1.41"
tracing-subscriber = "0.3.20" tracing-subscriber = "0.3.20"

View File

@@ -4,7 +4,11 @@ use axum::{
}; };
use std::{env::var, net::SocketAddr, time::Duration}; use std::{env::var, net::SocketAddr, time::Duration};
use tower_governor::{GovernorLayer, governor::GovernorConfigBuilder}; use tower_governor::{GovernorLayer, governor::GovernorConfigBuilder};
use tower_http::cors::{Any, CorsLayer}; use tower_http::{
cors::{Any, CorsLayer},
trace::{DefaultMakeSpan, DefaultOnResponse, TraceLayer},
};
use tracing::Level;
mod auth; mod auth;
mod db; mod db;
@@ -13,8 +17,9 @@ mod routes;
#[tokio::main] #[tokio::main]
async fn main() -> anyhow::Result<()> { async fn main() -> anyhow::Result<()> {
let subscriber = tracing_subscriber::FmtSubscriber::new(); tracing_subscriber::fmt()
tracing::subscriber::set_global_default(subscriber).unwrap(); .with_max_level(tracing::Level::INFO)
.init();
tracing::info!("Connecting to database..."); tracing::info!("Connecting to database...");
let db_pool = db::init_db().await?; let db_pool = db::init_db().await?;
@@ -25,8 +30,8 @@ async fn main() -> anyhow::Result<()> {
.allow_headers([header::AUTHORIZATION, header::CONTENT_TYPE]); .allow_headers([header::AUTHORIZATION, header::CONTENT_TYPE]);
let governor_conf = GovernorConfigBuilder::default() let governor_conf = GovernorConfigBuilder::default()
.per_second(50) .burst_size(10)
.burst_size(200) .per_millisecond(500)
.finish() .finish()
.unwrap(); .unwrap();
@@ -52,8 +57,13 @@ async fn main() -> anyhow::Result<()> {
.merge(routes::ws::routes()) .merge(routes::ws::routes())
.layer(Extension(db_pool)) .layer(Extension(db_pool))
.layer(Extension(realtime)) .layer(Extension(realtime))
.layer(cors) .layer(GovernorLayer::new(governor_conf))
.layer(GovernorLayer::new(governor_conf)); .layer(
TraceLayer::new_for_http()
.make_span_with(DefaultMakeSpan::new().level(Level::INFO))
.on_response(DefaultOnResponse::new().level(Level::INFO)),
)
.layer(cors);
let port = var("CHATAPP_SERVER_PORT").unwrap_or_else(|_| "8080".to_string()); let port = var("CHATAPP_SERVER_PORT").unwrap_or_else(|_| "8080".to_string());
let addr = format!("127.0.0.1:{port}"); let addr = format!("127.0.0.1:{port}");