Files
qgo-server/main.go
Smile Rex cdc39c1dd1
All checks were successful
Create and publish a Docker image 🚀 / build-and-push-image (push) Successful in 4m58s
add new tls enctrypt method
2026-03-03 22:13:44 +03:00

71 lines
1.4 KiB
Go

package main
import (
"log"
"log/slog"
"net/http"
"github.com/caddyserver/certmagic"
"github.com/okdaichi/gomoqt/moqt"
"github.com/okdaichi/gomoqt/quic"
)
func main() {
certmagic.DefaultACME.Email = "your-email@example.com"
certmagic.DefaultACME.Agreed = true
tlsConfig, err := certmagic.TLS([]string{"qgo-server.quizer.space"})
if err != nil {
log.Fatal(err)
}
tlsConfig.NextProtos = append([]string{"h3"}, tlsConfig.NextProtos...)
server := moqt.Server{
Addr: ":443",
TLSConfig: tlsConfig,
QUICConfig: &quic.Config{
Allow0RTT: true,
EnableDatagrams: true,
},
}
path := "/relay"
http.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) {
slog.Info("Incoming WebTransport request")
err := server.HandleWebTransport(w, r)
if err != nil {
slog.Error("WebTransport error", "error", err)
}
})
moqt.HandleFunc(path, func(w moqt.SetupResponseWriter, r *moqt.SetupRequest) {
slog.Info("MoQ setup request received")
sess, err := moqt.Accept(w, r, nil)
if err != nil {
slog.Error("Failed to accept session", "error", err)
return
}
slog.Info("MoQ session established", "remote", sess.RemoteAddr())
go handleSession(sess)
})
slog.Info("Server starting on https://localhost:8080")
if err := server.ListenAndServe(); err != nil {
slog.Error("Server failed", "error", err)
}
}
func handleSession(sess *moqt.Session) {
defer sess.Context().Done()
for {
select {}
}
}