Go 语言的现代化 WebSocket 开发利器

在现代 Web 开发中,实时通信需求日益增长,WebSocket 成为构建实时应用的核心技术。然而,Go 语言原生的 WebSocket 开发方式往往繁琐且容易出错。为了解决这一痛点,我们推出了 fun 框架------一个专为 Go 语言设计的现代化 WebSocket 框架,让实时应用开发变得简单、高效且优雅。

什么是 fun 框架?

fun 是一个基于 Gorilla WebSocket 构建的 Go 语言框架,它提供了服务绑定、依赖注入、参数验证、日志记录等丰富功能。fun 框架专注于简化 WebSocket 应用开发,通过自动生成 TypeScript 客户端代码,实现前后端开发的无缝协作。

fun 框架的核心优势

1. 极简的开发体验

通过结构化的服务定义和方法绑定,fun 让开发者能够以最自然的方式编写业务逻辑,无需关心底层 WebSocket 的复杂细节。

go 复制代码
// 定义服务结构体
type HelloService struct {
    fun.Ctx // 必须嵌入 Ctx
}

// 定义 DTO
type HelloDto struct {
    Name string 
}

// 定义方法
func (s *HelloService) Hello(dto HelloDto) string {
    return "Hello, " + dto.Name
}

func main() {
    // 绑定服务
    fun.BindService(HelloService{})
    
    // 启动服务
    fun.Start(3000)
}

2. 强大的依赖注入系统

fun 内置自动依赖注入功能,通过简单的标签即可实现服务间的依赖管理,大大降低了代码耦合度。

go 复制代码
type UserService struct {
    fun.Ctx
    Repo *Repository `fun:"auto"` // 自动注入
}

3. 完善的参数验证机制

集成 validator.v10,支持丰富的验证规则,确保数据的安全性和有效性。

go 复制代码
type UserDto struct {
    Name  string `validate:"required"`
    Email string `validate:"required,email"`
    Age   int    `validate:"min=0,max=150"`
}

4. 自动生成 TypeScript 客户端

fun 框架能够自动生成类型安全的 TypeScript 客户端代码,实现前后端类型一致性,提升开发效率。

typescript 复制代码
import fun from "./gen/ts/fun";

// 创建客户端实例
const client = fun.create("ws://localhost:3000");

// 调用服务方法
const result = await client.helloService.hello({ name: "World" });
console.log(result); // "Hello, World"

5. 灵活的守卫机制

类似中间件的守卫机制,可用于实现鉴权、日志记录等横切关注点。

go 复制代码
type AuthGuard struct {
    // 依赖...
}

func (g *AuthGuard) Guard(ctx fun.Ctx) {
    // 鉴权逻辑
    // 失败时可以 panic 错误
}

// 绑定全局守卫
fun.BindGuard(AuthGuard{})

6. 支持长连接和主动推送

通过代理模式,服务端可以主动向客户端推送数据,满足实时通信场景的需求。

go 复制代码
func (s *UserService) Subscribe(dto SubscribeDto, close fun.ProxyClose) *chan string {
    ch := make(chan string)
    
    // 处理关闭回调
    close(func() {
        close(ch)
    })
    
    go func() {
        for {
            select {
            case msg := <-ch:
                s.Push(s.Id, s.RequestId, msg) // 推送数据
            }
        }
    }()
    
    return &ch
}

为什么选择 fun 框架?

  1. 高效开发:通过自动生成代码和结构化设计,显著提升开发效率
  2. 类型安全:Go 和 TypeScript 的强类型系统确保运行时安全
  3. 易于维护:清晰的架构和自动化的代码生成降低维护成本
  4. 生态完善:基于成熟的技术栈,拥有丰富的社区支持
  5. 零学习成本:对于熟悉 Go 语言的开发者来说,几乎无需额外学习

快速开始

只需几个简单步骤,即可开始使用 fun 框架:

bash 复制代码
# 安装
go get github.com/chiyikj/fun

# 创建 main.go
# (参考上面的示例代码)

# 运行服务
go run main.go

# 生成客户端代码
fun.Gen()

结语

fun 框架致力于让 Go 语言的 WebSocket 开发变得更加简单和高效。无论你是构建实时聊天应用、在线游戏还是实时数据监控系统,fun 都能为你提供强大的支持。立即体验 fun 框架,开启你的现代化 WebSocket 开发之旅!

相关推荐
程序猿DD16 小时前
OPC必备!在 Cloudflare Worker 上免费部署 AI 网关:集中管理与供应 Token
后端
LucianaiB17 小时前
遇到 Seed Evolving,我终于把脑海里的小说世界图谱做出来了:《斗破苍穹》篇
后端
JuiceFS18 小时前
GPFS、Alluxio、JuiceFS 怎么选?一文看懂架构与适用场景
人工智能·后端
武子康18 小时前
1.2GB 离线语音 Agent 真正值得复用的不是 908ms:四阶段职责 + 状态感知 Tool Schema + 可观测时间锚点
人工智能·后端·agent
掘金者阿豪18 小时前
那些年踩过的 MySQL 迁移坑,这次终于不用绕了
后端
用户77139702070618 小时前
深夜食堂:那个让我加班到凌晨的 ! 符号
后端
swipe18 小时前
03|Axios 请求进了后端之后:Controller、Request、Response 是怎么接住它的?
前端·后端·全栈
swipe18 小时前
02|从 `pnpm dev` 到 Spring Boot 启动:后端服务到底怎么跑起来?
前端·后端·全栈
网易云信18 小时前
网易智企Data Agent实践入选信通院《智能体创新实践案例汇编》
人工智能·后端·线下活动
swipe18 小时前
01|前端人第一次打开 Spring Boot 项目,应该先看哪里?
前端·后端·全栈