SuperAPI AI 工具集

axum-impl-websockets

编程与开发

查看项目

更新于 10-16 09:56

技能介绍

用途:在 Axum 服务中实现 WebSocket 端点,覆盖添加新端点、0.7 到 0.8 迁移,以及服务端需要按自身节奏主动推送消息的场景。

主要能力:讲解 WebSocketUpgrade 提取器与 ws.on_upgrade 回调模型;区分顺序回显模式与并发收发模式;说明 0.8 中 Message 负载类型由 String/Vec<u8> 改为 Utf8Bytes/Bytes;提供消息构造、模式匹配、State 与 ConnectInfo 组合、升级失败日志、避免阻塞 socket 任务等做法。

必要用法:需在 Cargo.toml 启用 axum 的 ws feature,否则 axum::extract::ws 不存在;并发收发需要 tokio(macros、rt)与 futures-util,使用 socket.split() 拆分后分别 tokio::spawn,并用 tokio::select! 结束并 abort 另一方;路由用 any(handler)。ConnectInfo<SocketAddr> 需以 into_make_service_with_connect_info 启动服务。不可与请求体提取器同时使用 WebSocketUpgrade。

适用场景:仅回复客户端输入的纯回显;聊天中心、实时推送等需要主动推送的连接;双向通道需求(单向服务端推送可改用 Server-Sent Events)。

限制:同一 WebSocket 不能被两个任务同时可变借用,必须拆分;0.7 代码直接迁移会编译失败;on_upgrade 默认静默忽略升级失败;socket 任务中禁止阻塞,CPU 密集工作需 spawn_blocking。具体版本细节以所附参考文件为准,其他信息暂未提供。