transport

package
v0.9.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 28, 2026 License: Apache-2.0 Imports: 0 Imported by: 0

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
p2p
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 等包装链)、客户端断开时结束。
ws
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 的有状态会话高阶封装。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL