diff --git a/server/src/controller/websocket_controller.rs b/server/src/controller/websocket_controller.rs index 4f10573..e41b1f0 100644 --- a/server/src/controller/websocket_controller.rs +++ b/server/src/controller/websocket_controller.rs @@ -4,16 +4,18 @@ use axum::extract::ws::WebSocketUpgrade; use axum::extract::ConnectInfo; use axum::response::IntoResponse; use axum_extra::{headers, TypedHeader}; +use library::context::Context; use macros::ws; use crate::service::websocket_service; #[ws("/ws")] pub async fn websocket_handler( + context: Context, ws: WebSocketUpgrade, user_agent: Option>, ConnectInfo(addr): ConnectInfo ) -> impl IntoResponse { tracing::info!("`{:?}` at {:?} connected.", user_agent, addr); - ws.on_upgrade(move |socket| websocket_service::handle_socket(socket, addr)) + ws.on_upgrade(move |socket| websocket_service::handle_socket(socket, addr, context)) } diff --git a/server/src/service/websocket_service.rs b/server/src/service/websocket_service.rs index c07cd0f..34ad600 100644 --- a/server/src/service/websocket_service.rs +++ b/server/src/service/websocket_service.rs @@ -4,9 +4,12 @@ use std::ops::ControlFlow; use axum::extract::ws::{Message, WebSocket}; use futures::stream::{SplitSink, SplitStream}; use futures::{SinkExt, StreamExt}; +use library::context::Context; /// Actual websocket statemachine (one will be spawned per connection) -pub async fn handle_socket(socket: WebSocket, _who: SocketAddr) { +pub async fn handle_socket(socket: WebSocket, _who: SocketAddr, context: Context) { + let account = context.get_account().unwrap(); + tracing::info!("`{:?}` at {:?} connected, user is {:?}", account, _who, account.username); let (sender, receiver) = socket.split(); tokio::spawn(write(sender));