From 999d4b22381f9c919e40e9e84d44a7d60633699b Mon Sep 17 00:00:00 2001 From: Smile Rex Date: Tue, 10 Mar 2026 01:01:48 +0300 Subject: [PATCH] new quic release [chat tests] 5 --- main.go | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/main.go b/main.go index 2f7c4fe..e85d6c9 100644 --- a/main.go +++ b/main.go @@ -3,44 +3,63 @@ package main import ( "context" "fmt" + "log" "net/http" "github.com/quic-go/webtransport-go" ) func main() { + + mux := http.NewServeMux() + wm := &webtransport.Server{ CheckOrigin: func(r *http.Request) bool { return true }, } - mux := http.NewServeMux() mux.HandleFunc("/chat", func(w http.ResponseWriter, r *http.Request) { + session, err := wm.Upgrade(w, r) if err != nil { - fmt.Printf("Ошибка апгрейда: %v\n", err) + log.Println("upgrade error:", err) return } + go handleChatSession(session) }) - fmt.Println("Сервер чата запущен на :8080") - // Traefik пробросит сюда HTTP/3 запрос - http.ListenAndServe(":8080", mux) + server := &http.Server{ + Addr: ":8080", + Handler: mux, + } + + fmt.Println("Server started") + + log.Fatal(server.ListenAndServe()) } func handleChatSession(session *webtransport.Session) { + for { - // Принимаем двунаправленный поток (для сообщений) + stream, err := session.AcceptStream(context.Background()) if err != nil { return } - go func(s webtransport.Stream) { + + go func(s *webtransport.Stream) { + defer s.Close() + buf := make([]byte, 1024) + n, _ := s.Read(buf) - fmt.Printf("Сообщение: %s\n", string(buf[:n])) - s.Write([]byte("Сервер: Принято!")) - }(*stream) + + fmt.Println("Message:", string(buf[:n])) + + s.Write([]byte("Server: OK")) + + }(stream) + } }