Documentation
¶
Overview ¶
Package transport 提供实时传输与长连接层,解决"客户端与服务端之间的持久通道"问题。
选包标准:
- 涉及持久连接 / 推送 / 双向通信(WebSocket、SSE、QUIC、P2P 等)
- 如果只是一次性 HTTP 请求/响应,不属于此组(属于 api/ 或 service/webserver)
- 可依赖 foundation/、messaging/(如 stream)、api/(如 token)
已有子包:
ws — WebSocket 薄封装(基于 coder/websocket) sse — Server-Sent Events 封装 quic — QUIC 连接层(基于 quic-go) p2p — P2P 双通道抽象(Transport/PeerConn/Network/Topology/Signaling) presence — 在线状态追踪(含 status 子包) router — 多语义消息路由(pub/sub + request/reply + push) resume — 断线重连与消息补发
Directories
¶
| Path | Synopsis |
|---|---|
|
Package p2p 提供面向 P2P 数据通道的传输无关抽象:把 WebRTC DataChannel 从 "媒体通话工具"变为"通用 P2P 数据管道",支持可靠/不可靠双通道语义。
|
Package p2p 提供面向 P2P 数据通道的传输无关抽象:把 WebRTC DataChannel 从 "媒体通话工具"变为"通用 P2P 数据管道",支持可靠/不可靠双通道语义。 |
|
quictransport
Package quictransport 提供基于 QUIC 的 p2p.Transport 实现。
|
Package quictransport 提供基于 QUIC 的 p2p.Transport 实现。 |
|
signaling
Package signaling 提供面向 P2P DataChannel 的信令服务:通过 WebSocket 中继 WebRTC 协商消息(offer/answer/candidate),让 peers 能自动发现、配对、建立 直连的 DataChannel——无需业务代码接触底层 ICE/SDP 细节。
|
Package signaling 提供面向 P2P DataChannel 的信令服务:通过 WebSocket 中继 WebRTC 协商消息(offer/answer/candidate),让 peers 能自动发现、配对、建立 直连的 DataChannel——无需业务代码接触底层 ICE/SDP 细节。 |
|
tcptransport
Package tcptransport 提供基于 TCP 的 p2p.Transport 实现。
|
Package tcptransport 提供基于 TCP 的 p2p.Transport 实现。 |
|
topology
Package topology 提供 P2P 网络的拓扑策略:当 peer 加入/离开房间时,决定哪些 peer 之间应建立直连。
|
Package topology 提供 P2P 网络的拓扑策略:当 peer 加入/离开房间时,决定哪些 peer 之间应建立直连。 |
|
Package presence 提供在线状态(在场追踪)原语:维护"谁在哪个流(stream)里" 的双向索引,支持 O(1) 按流查询成员、按会话查询所在流,以及 join/leave 事件总线。
|
Package presence 提供在线状态(在场追踪)原语:维护"谁在哪个流(stream)里" 的双向索引,支持 O(1) 按流查询成员、按会话查询所在流,以及 join/leave 事件总线。 |
|
status
Package status 把用户的在线状态变化(上线/下线/进出流)推送给关注他的人。
|
Package status 把用户的在线状态变化(上线/下线/进出流)推送给关注他的人。 |
|
Package quic 提供基于 QUIC(quic-go)的连接层,作为 pkg/ws(WebSocket/TCP)之外 面向实时/游戏同步的可选传输。
|
Package quic 提供基于 QUIC(quic-go)的连接层,作为 pkg/ws(WebSocket/TCP)之外 面向实时/游戏同步的可选传输。 |
|
Package resume 提供断线重连的在场状态还原:客户端用 refresh token 重连, 服务端换出 userID,查 presence 看用户还在哪些流,返回流列表让客户端自动重连。
|
Package resume 提供断线重连的在场状态还原:客户端用 refresh token 重连, 服务端换出 userID,查 presence 看用户还在哪些流,返回流列表让客户端自动重连。 |
|
Package router 提供多语义消息路由:把一条消息发给一组人(presence IDs)、 一个流(stream)的全部成员、或所有人,并支持一帧内多条消息攒批下发。
|
Package router 提供多语义消息路由:把一条消息发给一组人(presence IDs)、 一个流(stream)的全部成员、或所有人,并支持一帧内多条消息攒批下发。 |
|
Package sse 提供 Server-Sent Events 的轻量封装,屏蔽 SSE 在 Go 里的常见坑: 自动设置流式响应头、解除本连接的写超时(避免被 server WriteTimeout 掐断)、 每条事件后自动 flush(穿透 otelhttp / compress 等包装链)、客户端断开时结束。
|
Package sse 提供 Server-Sent Events 的轻量封装,屏蔽 SSE 在 Go 里的常见坑: 自动设置流式响应头、解除本连接的写超时(避免被 server WriteTimeout 掐断)、 每条事件后自动 flush(穿透 otelhttp / compress 等包装链)、客户端断开时结束。 |
|
Package ws 基于 github.com/coder/websocket 提供 WebSocket 的轻量封装: 自动完成握手升级、统一关闭语义,并把 *http.Request 透传给业务, 便于读取 query / header / 子协议 / 鉴权信息。
|
Package ws 基于 github.com/coder/websocket 提供 WebSocket 的轻量封装: 自动完成握手升级、统一关闭语义,并把 *http.Request 透传给业务, 便于读取 query / header / 子协议 / 鉴权信息。 |
|
session
Package session 提供基于 WebSocket 的有状态会话高阶封装。
|
Package session 提供基于 WebSocket 的有状态会话高阶封装。 |
Click to show internal directories.
Click to hide internal directories.