hul ignennem
This commit is contained in:
@@ -129,7 +129,7 @@ async fn main() {
|
||||
async fn ws_handler(
|
||||
ws: WebSocketUpgrade,
|
||||
user_agent: Option<TypedHeader<headers::UserAgent>>,
|
||||
Extension(app_state_watch_rx): Extension<tokio::sync::watch::Receiver<AppState>>,
|
||||
Extension(state_watch_rx): Extension<tokio::sync::watch::Receiver<common::State>>,
|
||||
) -> impl IntoResponse {
|
||||
let user_agent = if let Some(TypedHeader(user_agent)) = user_agent {
|
||||
user_agent.to_string()
|
||||
@@ -138,15 +138,15 @@ async fn ws_handler(
|
||||
};
|
||||
tracing::debug!("{user_agent} connected websocket.");
|
||||
|
||||
ws.on_upgrade(move |socket| handle_socket(socket, app_state_watch_rx))
|
||||
ws.on_upgrade(move |socket| handle_socket(socket, state_watch_rx))
|
||||
}
|
||||
|
||||
/// Websocket statemachine (one will be spawned per connection)
|
||||
async fn handle_socket(mut socket: WebSocket, app_state_watch_rx: tokio::sync::watch::Receiver<AppState>) {
|
||||
let mut stream = tokio_stream::wrappers::WatchStream::new(app_state_watch_rx);
|
||||
loop {
|
||||
let app_state = stream.next().await;
|
||||
let serialized = serde_json::to_string(&app_state).expect("Failed to serialize app state to JSON");
|
||||
async fn handle_socket(mut socket: WebSocket, state_watch_rx: tokio::sync::watch::Receiver<common::State>) {
|
||||
let mut stream = tokio_stream::wrappers::WatchStream::new(state_watch_rx);
|
||||
while let Some(state) = stream.next().await {
|
||||
let state: common::WebSocketMessage = state;
|
||||
let serialized = serde_json::to_string(&state).expect("Failed to serialize app state to JSON");
|
||||
if socket.send(Message::Text(serialized)).await.is_err() {
|
||||
tracing::debug!("Websocket client disconnected");
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user