dave-go is a pure Go DAVE implementation targeting the github.com/disgoorg/godave.Session interface.
I originally started this while trying to get the MLS pieces needed for DAVE working in pure Go, and it ended up growing into a standalone implementation. It is built on top of github.com/thomas-vilte/mls-go.
It is working and already usable, but I still consider it early and there are a few rough edges I want to clean up over time.
go get github.com/thomas-vilte/dave-goFor a tagged version:
go get github.com/thomas-vilte/dave-go@v0.1.0Use the session implementation anywhere a godave.SessionCreateFunc is expected:
import (
"github.com/disgoorg/disgo/voice"
"github.com/thomas-vilte/dave-go/session"
)
voice.WithDaveSessionCreateFunc(session.New)There is also a small disgo voice example in examples/voice.
session:godave.Sessionimplementationmediakeys: sender key derivation and ratchetsframe: DAVE frame encrypt/decrypt logiccodecs: codec-aware frame transforms used by the session layer
- the example streams Opus frames from a local
.dcafile - some internal comments may still be cleaned up over time