GoWind 开源生态GoWind 开源生态
首页
框架
GoWind Admin
GoWind CMS
GoWind IM
GoWind UBA
GoWind IoT
GoWind Toolkit
GoWind Quant
GitHub
首页
框架
GoWind Admin
GoWind CMS
GoWind IM
GoWind UBA
GoWind IoT
GoWind Toolkit
GoWind Quant
GitHub
  • 介绍

    • GoWind 框架
    • 框架整体架构
  • go-wind 核心

    • go-wind 核心框架
    • App 生命周期管理
    • Context 传播
    • Transport 抽象
    • Log 门面接口
  • go-wind-plugins 插件

    • go-wind-plugins 插件总览
    • 插件配置系统
    • 插件注册机制(SPI)
    • 日志适配插件
    • 传输协议插件
    • 消息中间件插件
    • 编码解码插件
    • 安全与认证插件
    • 链路追踪插件
    • 缓存插件
    • 对象存储插件(OSS)
    • 限流插件
    • 指标监控插件
    • AI 插件
    • 工作流插件
    • 数据库与缓存插件
    • Bootstrap 集成与网关插件
    • 压缩与序列化插件
    • 模板渲染与验证插件
  • go-wind-bootstrap 启动器

    • go-wind-bootstrap 声明式启动器
    • Bootstrap 配置系统
    • Bootstrap SPI 机制
    • 声明式中间件编排
    • Bootstrap CLI 工具
    • Bootstrap 实战示例
  • 教程

    • 快速入门教程
    • 自定义插件开发教程
    • 多协议同时监听教程
    • 框架迁移指南

Transport 抽象

go-wind 的 Transport 模块定义了传输层的统一接口,支持 HTTP、gRPC、WebSocket、SSE 等多种协议。

一、Server 接口

// transport/transport.go
type Server interface {
    Start(context.Context) error
    Stop(context.Context) error
    Endpoint() []string
    Type() string
}

任何实现此接口的传输层都可以注册到 App。

二、支持的协议

协议插件路径典型场景
HTTPplugins/transport/httpREST API
gRPCplugins/transport/grpc内部服务调用
WebSocketplugins/transport/websocket实时双向通信
SSEplugins/transport/sse服务端推送
TCPplugins/transport/tcp自定义协议
KCPplugins/transport/kcp低延迟 UDP
GraphQLplugins/transport/graphqlGraphQL API

三、自定义 Transport

package mytransport

type Server struct {
    addr     string
    listener net.Listener
}

func NewServer(opts ...Option) *Server {
    s := &Server{addr: ":9090"}
    for _, opt := range opts {
        opt(s)
    }
    return s
}

func (s *Server) Start(ctx context.Context) error {
    ln, err := net.Listen("tcp", s.addr)
    if err != nil {
        return err
    }
    s.listener = ln
    go s.accept(ctx)
    return nil
}

func (s *Server) Stop(ctx context.Context) error {
    return s.listener.Close()
}

func (s *Server) Endpoint() []string {
    return []string{fmt.Sprintf("custom://%s", s.addr)}
}

func (s *Server) Type() string { return "custom" }

四、多协议同时监听

app := wind.New(
    wind.WithServer(httpServer),    // HTTP :8080
    wind.WithServer(grpcServer),    // gRPC :9090
    wind.WithServer(wsServer),      // WebSocket :8081
)
// 三种协议同时运行,共享同一个 App 生命周期

相关文档

  • 核心框架介绍
  • 传输协议插件
  • 声明式中间件编排
  • 多协议同时监听教程
Edit this page
Last Updated:: 6/21/26, 9:28 PM
Contributors: Bobo
Prev
Context 传播
Next
Log 门面接口