feat: log level config
feat: ffmpeg args placeholder
This commit is contained in:
35
server/server.go
Normal file → Executable file
35
server/server.go
Normal file → Executable file
@@ -3,10 +3,10 @@ package server
|
||||
import (
|
||||
"embed"
|
||||
"html/template"
|
||||
"live-streamer/config"
|
||||
c "live-streamer/config"
|
||||
"live-streamer/logger"
|
||||
"live-streamer/streamer"
|
||||
mywebsocket "live-streamer/websocket"
|
||||
"log"
|
||||
"net/http"
|
||||
"sync"
|
||||
"time"
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
"github.com/gin-gonic/gin"
|
||||
uuid "github.com/gofrs/uuid/v5"
|
||||
"github.com/gorilla/websocket"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
//go:embed static
|
||||
@@ -41,7 +42,17 @@ type Client struct {
|
||||
hasSentSize int
|
||||
}
|
||||
|
||||
var GlobalServer *Server
|
||||
var (
|
||||
GlobalServer *Server
|
||||
|
||||
config *c.Config
|
||||
log *zap.Logger
|
||||
)
|
||||
|
||||
func init() {
|
||||
config = c.GlobalConfig
|
||||
log = logger.GlobalLogger
|
||||
}
|
||||
|
||||
func NewServer(addr string, dealInputFunc InputFunc) {
|
||||
GlobalServer = &Server{
|
||||
@@ -56,7 +67,7 @@ func (s *Server) Run() {
|
||||
router := gin.New()
|
||||
tpl, err := template.ParseFS(staticFiles, "static/*")
|
||||
if err != nil {
|
||||
log.Fatalf("Error parsing templates: %v", err)
|
||||
log.Fatal("parsing templates error", zap.Error(err))
|
||||
}
|
||||
router.SetHTMLTemplate(tpl)
|
||||
|
||||
@@ -69,7 +80,7 @@ func (s *Server) Run() {
|
||||
|
||||
go func() {
|
||||
if err := router.Run(s.addr); err != nil {
|
||||
log.Fatalf("Error starting server: %v", err)
|
||||
log.Fatal("starting server error", zap.Error(err))
|
||||
}
|
||||
}()
|
||||
}
|
||||
@@ -86,7 +97,7 @@ func (s *Server) handleWebSocket(c *gin.Context) {
|
||||
|
||||
id, err := uuid.NewV7()
|
||||
if err != nil {
|
||||
log.Printf("generating uuid error: %v", err)
|
||||
log.Error("generating uuid error", zap.Error(err))
|
||||
return
|
||||
}
|
||||
client := &Client{id: id.String(), conn: ws, hasSentSize: 0}
|
||||
@@ -102,7 +113,7 @@ func (s *Server) handleWebSocket(c *gin.Context) {
|
||||
delete(s.clients, client.id)
|
||||
s.mu.Unlock()
|
||||
if r := recover(); r != nil {
|
||||
log.Printf("webSocket handler panic: %v", r)
|
||||
log.Panic("webSocket handler panic", zap.Any("recover", r))
|
||||
}
|
||||
}()
|
||||
|
||||
@@ -126,7 +137,7 @@ func (s *Server) handleWebSocket(c *gin.Context) {
|
||||
client.mu.Unlock()
|
||||
if err != nil {
|
||||
if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) {
|
||||
log.Printf("websocket error: %v", err)
|
||||
log.Error("websocket error", zap.Error(err))
|
||||
}
|
||||
break
|
||||
}
|
||||
@@ -136,8 +147,8 @@ func (s *Server) handleWebSocket(c *gin.Context) {
|
||||
|
||||
func AuthMiddleware() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
if config.GlobalConfig.Server.Token == "" ||
|
||||
c.Query("token") == config.GlobalConfig.Server.Token {
|
||||
if config.Server.Token == "" ||
|
||||
c.Query("token") == config.Server.Token {
|
||||
c.Next()
|
||||
} else {
|
||||
c.AbortWithStatus(http.StatusUnauthorized)
|
||||
@@ -150,7 +161,7 @@ func (s *Server) Broadcast(obj mywebsocket.Date) {
|
||||
for _, client := range s.clients {
|
||||
obj.Timestamp = time.Now().UnixMilli()
|
||||
if err := client.conn.WriteJSON(obj); err != nil {
|
||||
log.Printf("websocket writing message error: %v", err)
|
||||
log.Error("websocket writing message error", zap.Error(err))
|
||||
}
|
||||
}
|
||||
s.mu.Unlock()
|
||||
@@ -161,7 +172,7 @@ func (s *Server) Single(userID string, obj mywebsocket.Date) {
|
||||
if client, ok := s.clients[userID]; ok {
|
||||
obj.Timestamp = time.Now().UnixMilli()
|
||||
if err := client.conn.WriteJSON(obj); err != nil {
|
||||
log.Printf("websocket writing message error: %v", err)
|
||||
log.Error("websocket writing message error", zap.Error(err))
|
||||
}
|
||||
}
|
||||
s.mu.Unlock()
|
||||
|
||||
0
server/static/index.html
Normal file → Executable file
0
server/static/index.html
Normal file → Executable file
Reference in New Issue
Block a user