Files
push-server/cmd/server/main.go
R2m1liA 53555a31c0 refactor: 重构项目结构
- 将server端相关依赖单独防止在server中
2025-12-17 12:34:03 +08:00

50 lines
1.0 KiB
Go

package main
import (
"context"
"log"
"net/http"
"os"
"os/signal"
"syscall"
"time"
"git.jinshen.cn/remilia/push-server/interval/server/api"
"git.jinshen.cn/remilia/push-server/interval/server/httpserver"
"git.jinshen.cn/remilia/push-server/interval/server/ws"
)
func main() {
serverCtx, stop := signal.NotifyContext(
context.Background(),
os.Interrupt,
syscall.SIGTERM,
)
defer func() {
stop()
}()
h := ws.NewHub()
go h.Run(serverCtx)
httpServer := httpserver.NewHTTPServer(":8080", api.NewRouter(h, serverCtx))
go func() {
log.Println("Starting HTTP server on :8080")
if err := httpServer.Start(); err != nil && err != http.ErrServerClosed {
log.Fatalf("HTTP server error: %v", err)
}
}()
<-serverCtx.Done()
log.Println("Shutting down server...")
shutdownCtx, shutdownCancel := context.WithTimeout(context.Background(), time.Second*10)
defer shutdownCancel()
if err := httpServer.Shutdown(shutdownCtx); err != nil {
log.Printf("HTTP server shutdown error: %v", err)
}
}