How to solved the share state in WebSocket? #3043
Unanswered
callmeitachi
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Summary
I have the following code:
use axum::{
Extension,
extract::{ws::{Message, WebSocket, WebSocketUpgrade}, State}, response::{IntoResponse, Response}, routing::get, Router
};
use std::sync::{Arc,Mutex};
pub struct AppState {
pub data:Arc<Mutex>,
}
pub async fn handler1(ws: WebSocketUpgrade,State(state):State) -> Response {
ws.on_upgrade(|socket| handle_socket(socket,state))
}
pub async fn handle_socket(mut socket: WebSocket,state:AppState) {
![axum_error](https://private-user-images.githubusercontent.com/102745169/388552282-7e028037-0c49-4055-b70f-3f9d713005c0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxMTU3ODQsIm5iZiI6MTczOTExNTQ4NCwicGF0aCI6Ii8xMDI3NDUxNjkvMzg4NTUyMjgyLTdlMDI4MDM3LTBjNDktNDA1NS1iNzBmLTNmOWQ3MTMwMDVjMC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjA5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIwOVQxNTM4MDRaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1iYTYzMGRiNzU2ZmY4ZWE5ZTBjMzU0MzA2ODM0ODhhYzEyMTIxMTE2M2EzZTVmZjJiOWQxM2FiNTQxNjdiZmYxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.E6EtSVizCApHhxrLr4IvvNkQQl_Q6mBKR4qAw7vjPjU)
while let Some(msg) = socket.recv().await {
println!("got it");
let msg = if let Ok(msg) = msg {
msg
} else {
// client disconnected
return;
};
let mut state=state.data.lock().unwrap();
}
but it can't compile?why?
axum version
axum = {version="0.7.7",features=["multipart","ws"]}
Beta Was this translation helpful? Give feedback.
All reactions