blog.cover

重构我的自部署Livekit语音项目

蹬AI的轮椅好爽

浏览179
评论0
05月30日

缘起

两年前,Oopz和KOOK两家竞争有点狠,主包平常都是用Oopz的,某天啊,友商疯狂攻击Oopz服务器,登都登不上去,整的大伙都没游戏语音用了,被逼无奈我买了一个月ts服务器用。再之后想了想,我有VPS啊,不想花这钱,于是就产生了一个想法,那就自己写一个游戏语音平台吧。

这个项目写了两版,最开始一版在https://github.com/NoelOrin/GameSpeak,写的有点烂,最近在重构新版了。

简单介绍

Tech Stack:

  • Framework: SolidJS + TanStack Router + TanStack Query

  • UI: TailwindCSS + DaisyUI

  • Real-time: Socket.IO Client + LiveKit Client SDK

  • State: SolidJS Store + IndexedDB (idb-keyval)

  • HTTP: Axios (本来想套个Protobuf的)

  • Build: Vite (rolldown-vite)

这个项目支持多SFU提供商,目前只接入了Livekit的服务。声网什么的sdk等有时间再接入吧。还有Oauth、数据库、Redis这些都留好了抽象层的接入接口,填入环境变量就可以直接用,方便后期灵活接入。

项目架构

Markdown
      
┌─────────────────────────────────────────────────────────────────────────────────┐
│                              GOSpeak Monorepo                                   │
├─────────────────────────────────────────────────────────────────────────────────┤
│                                                                                 │
│  ┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐              │
│  │   packages/web  │    │ packages/server │    │  packages/bot   │              │
│  │   (SolidJS)     │    │     (Go)        │    │    (还没做)      │              │
│  └────────┬────────┘    └────────┬────────┘    └────────┬────────┘              │
│           │                      │                      │                       │
│           └──────────────────────┼──────────────────────┘                       │
│                                  │                                              │
└──────────────────────────────────┼──────────────────────────────────────────────┘
                                   │
                                   ▼
┌─────────────────────────────────────────────────────────────────────────────────┐
│                              Infrastructure                                     │
├─────────────────────────────────────────────────────────────────────────────────┤
│                                                                                 │
│  ┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐              │
│  │   LiveKit SFU   │    │     Redis       │    │   Database      │              │
│  │   (WebRTC)      │    │   (Cache)       │    │  (SQLite/PG)    │              │
│  └─────────────────┘    └─────────────────┘    └─────────────────┘              │
│                                                                                 │
└─────────────────────────────────────────────────────────────────────────────────┘


    

项目图片

UI参考了Discord
语音设置
语音房间页面,有些细节待调整

相关细节和文章内容等下一阶段开发完了丢GIthub公开之后再补充吧

重构我的自部署Livekit语音项目
作者 NoelOrin
发布时间05月30日
许可协议 CC BY-NC-SA 4.0