首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用axum接受websocket连接时,如何获得查询参数?

在使用axum接受websocket连接时,如何获得查询参数?
EN

Stack Overflow用户
提问于 2022-09-13 09:08:52
回答 1查看 176关注 0票数 0

在使用axum接受websocket连接时,如何获得查询参数?

下面的代码用于接受websocket连接,但是如何获得url的参数呢?

代码语言:javascript
复制
// 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进行访问,并希望获得名称和年龄提取值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-21 22:52:36

您可以将其他萃取器WebSocketUpgrade一起使用。你会在找Query

代码语言:javascript
复制
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)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73700337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档