在使用axum接受websocket连接时,如何获得查询参数?
下面的代码用于接受websocket连接,但是如何获得url的参数呢?
// Echo back
async fn handle_socket(mut socket: WebSocket) {
while let Some(msg) = socket.recv().await {
let msg = if let Ok(msg) = msg {
msg
} else {
// client disconnected
return;
};
if socket.send(msg).await.is_err() {
// client disconnected
return;
}
}
}
async fn ws_handle(ws: WebSocketUpgrade) -> Response {
ws.on_upgrade(handle_socket)
}
let app = Router::new()
.route("/ws", get(ws_handle));
axum::Server::bind(&"0.0.0.0:3000".parse().unwrap())
.serve(app.into_make_service())
.await
.unwrap();例如,我通过wscat ws://127.0.0.1:3000/ws?name=aaa&age=18进行访问,并希望获得名称和年龄提取值。
发布于 2022-09-21 22:52:36
您可以将其他萃取器与WebSocketUpgrade一起使用。你会在找Query
use axum::extract::Query;
use serde::Deserialize;
#[derive(Deserialize)]
struct Params {
name: String,
age: i32,
}
async fn ws_handle(
Query(params): Query<Params>,
ws: WebSocketUpgrade,
) -> Response {
// do something with `params`
ws.on_upgrade(handle_socket)
}https://stackoverflow.com/questions/73700337
复制相似问题