You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在beast::websocket中获取客户端发送的请求路径

Boost.Beast WebSocket 服务端获取请求路径方法

你使用的官方异步WebSocket服务端示例中,WebSocket连接建立前会先收到客户端的HTTP升级请求,直接从该请求对象即可提取完整的请求路径和查询参数,操作步骤如下:

  • 找到代码中调用websocket::stream::async_accept执行握手的逻辑位置,此处你已经持有http::request<http::string_body>类型的HTTP请求对象(示例默认变量名为req)
  • 调用请求对象的target()方法即可直接获取完整的请求URI(包含路径和查询参数):
    示例代码:
    std::string request_uri = req.target();
    当客户端请求地址为ws://mydomain.com/some_operation?channel=XXX时,上述代码拿到的request_uri值为/some_operation?channel=XXX
  • 如果你需要拆分路径和查询参数,可以用Boost.Beast自带的URL解析工具处理:
    #include <boost/beast/http/url.hpp>
    
    // 解析请求URI
    boost::beast::http::url parsed_url(req.target());
    // 提取纯路径(不含查询参数)
    std::string request_path = parsed_url.path();
    // 提取指定查询参数,例如channel
    std::string channel_value = parsed_url.params().get("channel").value_or("default_channel");
    
  • 你可以在握手前先判断路径是否合法,也可以将解析得到的路径、参数传入后续WebSocket会话的业务逻辑中,实现不同请求路径的分发处理。

内容的提问来源于stack exchange,提问作者Carlos Lobo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 14:15:02