UNIFIED ASYNC NETWORKING
breconn
基于 Asio、以 Channel 统一接口的多传输与服务发现网络库
NETWORKING CORE
breconn 是一套目前约 2 万行代码、基于 Asio 的网络库。上层只使用简洁、统一的 Channel 接口,不需要直接处理不同传输协议的连接、收发与生命周期差异;底层目前提供 TCP、UDP、KCP,以及 UDP 组播与广播能力,QUIC 作为后续传输能力规划。协议层已经覆盖 HTTP 与 WebSocket,mDNS 被拆成解耦的服务发现模块,并通过插件机制为 RTP 等新协议保留动态扩展入口。
One channel.
Many transports.
所有后端向同一个稳定边界汇聚;协议再从边界之上生长。
统一管理异步 I/O、任务调度、超时与连接生命周期
向上层提供一致的连接、收发、关闭、错误与状态事件接口
承载 TCP、UDP 与 KCP 实现,并为后续 QUIC 后端保留扩展边界
提供组播组管理、网卡选择与局域网广播收发能力
将服务发现与公告解耦为独立模块,通过 Channel 接入而不依赖具体业务
在 Channel 之上完成协议解析、封装、升级与会话处理
通过注册和装配机制动态接入 RTP 等新增协议模块
协议差异,不应该泄漏到业务。
TCP、UDP 与 KCP 在连接语义、可靠性、消息边界和生命周期上差异明显,如果业务直接依赖各自的 Socket API,每增加一种传输方式都会把分支扩散到上层。组播、广播与 mDNS 又同时涉及网卡选择、地址管理和服务发现状态;如果与 UDP 或业务代码强绑定,协议层和发现服务便无法独立测试、替换与复用。
把变化隔离在 Channel 的另一侧。
以 Asio 承担异步 I/O 与事件循环,在传输实现之上建立统一 Channel 抽象,把打开、关闭、读写、错误和状态变化收敛为稳定接口。UDP 后端提供组播组管理与广播收发,mDNS 则作为独立服务使用标准 Channel 能力完成发现与公告。HTTP 与 WebSocket 作为协议层运行在 Channel 之上,并通过协议插件注册与装配机制扩展新的解析、封装和会话逻辑。
网络能力与实现边界
能力与边界基于 Asio 组织异步 I/O、连接生命周期与事件调度
上层统一使用 Channel 接口,隐藏不同传输实现的操作差异
当前提供 TCP、UDP 与 KCP 传输能力
支持 UDP 组播组加入、离开以及局域网广播收发
mDNS 以解耦服务提供设备发现与服务公告,不绑定具体业务模块
QUIC 已纳入后续规划,当前尚未实现
协议层支持 HTTP 与 WebSocket,并与底层传输解耦
协议插件机制允许后续动态增加 RTP 等协议能力
后续演进 · 以下为路线图,具体阶段以项目说明为准。
接口保持稳定,
能力继续向外扩张。
CURRENT
稳定统一接口与现有网络能力
- Asio 异步运行时
- Channel 统一接口
- TCP / UDP / KCP
- UDP 组播与广播
- 解耦 mDNS 服务
- HTTP / WebSocket
- 协议层插件机制
NEXT
扩展传输后端与实时媒体协议
- 实现并接入 QUIC
- 增加 RTP 等协议插件
- 完善插件发现与动态装配
- 补充跨协议测试与性能基准
任何新协议都不能破坏这些约束
- 01
业务依赖 Channel,而不是依赖某一种 Socket 或传输协议。
LOCKED - 02
传输层解决数据如何到达,协议层解决数据如何解释,两者保持可独立扩展。
LOCKED - 03
新增后端或协议不应迫使已有上层业务修改调用方式。
LOCKED - 04
尚未实现的能力必须明确标记为规划项,避免把路线图写成现成功能。
LOCKED