重构我的自部署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) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘
项目图片
相关细节和文章内容等下一阶段开发完了丢GIthub公开之后再补充吧