ev-drogon-coroutine-websocket-003¶
| 字段 | 值 |
|---|---|
| 项目 | drogonframework/drogon |
| 固定 commit | 3aae769cc405 |
| 路径 | lib/inc/drogon/WebSocketController.h |
| 行段 | L186-L193 |
| 特性 | 协程 |
| 许可证 | MIT |
| 代码来源 | 项目源码 |
| 级别 | manual |
| 审核 | zyuhao7 @ 2026-10-25 |
| 测试代码 | 否 |
| 发现方式 | tree-sitter |
用法¶
把回调式 WebSocket 事件适配成 Task<>,在 lambda 内 co_await 协程处理器
为什么典型¶
WebSocket 接口本身是回调风格;框架用 async_run 启动一个 Task<> 协程桥接旧接口,让业务侧可以写 handleNewMessageCoro 这样的协程函数而不改变公共 API。
摘录¶
drogon::async_run([objPtr,
conn,
message = std::move(message),
type]() mutable -> Task<> {
co_await objPtr->handleNewMessageCoro(conn,
std::move(message),
type);
});
备注¶
生产路径;lambda 捕获消息并按值移动进协程帧,展示回调到协程的适配边界。