Update main.go
This commit is contained in:
26
main.go
26
main.go
@@ -14,13 +14,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
// 1. Настройка TLS (обязательно для WebTransport/QUIC)
|
// Генерируем сертификат для внутреннего TLS (Caddy -> Go)
|
||||||
// Поскольку SSL терминация на VPS, здесь мы используем самоподписанный сертификат
|
|
||||||
// для внутренней связи (Dokploy <-> Caddy). Nixpacks соберет это.
|
|
||||||
// Но для простоты примера мы просто слушаем обычный HTTP, так как Caddy проксирует.
|
|
||||||
// ОДНАКО: WebTransport ТРЕБУЕТ TLS. Внутренний TLS тоже нужен.
|
|
||||||
// Мы сгенерируем его на лету, чтобы не возиться с файлами.
|
|
||||||
|
|
||||||
cert, err := generateSelfSignedCert()
|
cert, err := generateSelfSignedCert()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@@ -28,35 +22,31 @@ func main() {
|
|||||||
|
|
||||||
tlsConfig := &tls.Config{
|
tlsConfig := &tls.Config{
|
||||||
Certificates: []tls.Certificate{cert},
|
Certificates: []tls.Certificate{cert},
|
||||||
NextProtos: []string{"h3"}, // HTTP/3
|
NextProtos: []string{"h3"},
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Настройка WebTransport Handler
|
|
||||||
server := webtransport.Server{
|
server := webtransport.Server{
|
||||||
H3: http3.Server{
|
H3: http3.Server{
|
||||||
Addr: ":8080", // Порт внутри контейнера
|
Addr: ":9001", // МЕНЯЕМ ПОРТ ЗДЕСЬ
|
||||||
TLSConfig: tlsConfig,
|
TLSConfig: tlsConfig,
|
||||||
},
|
},
|
||||||
CheckOrigin: func(r *http.Request) bool { return true }, // Разрешить все Origin для теста
|
CheckOrigin: func(r *http.Request) bool { return true },
|
||||||
}
|
}
|
||||||
// Раздаем index.html
|
|
||||||
|
// Раздаем статику и вешаем обработчик WT
|
||||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||||
http.ServeFile(w, r, "index.html")
|
http.ServeFile(w, r, "index.html")
|
||||||
})
|
})
|
||||||
|
|
||||||
http.HandleFunc("/wt", func(w http.ResponseWriter, r *http.Request) {
|
http.HandleFunc("/wt", func(w http.ResponseWriter, r *http.Request) {
|
||||||
log.Println("New WebTransport request from:", r.RemoteAddr)
|
|
||||||
sess, err := server.Upgrade(w, r)
|
sess, err := server.Upgrade(w, r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Upgrade failed: %v", err)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Обработка сессии в отдельной горутине
|
|
||||||
go handleSession(sess)
|
go handleSession(sess)
|
||||||
})
|
})
|
||||||
|
|
||||||
log.Println("WebTransport server listening on https://localhost:8080/wt (via Caddy)")
|
log.Println("WebTransport server started on :9001")
|
||||||
// Запускаем HTTP/3 сервер
|
|
||||||
if err := server.ListenAndServe(); err != nil {
|
if err := server.ListenAndServe(); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user