perf: 提升后端高并发承载能力
This commit is contained in:
@@ -25,7 +25,6 @@ import (
|
||||
|
||||
"hightube/internal/chat"
|
||||
"hightube/internal/db"
|
||||
"hightube/internal/model"
|
||||
"hightube/internal/monitor"
|
||||
)
|
||||
|
||||
@@ -147,7 +146,9 @@ func NewRTMPServer() *RTMPServer {
|
||||
if isSource {
|
||||
roomIDUint := parseRoomID(roomID)
|
||||
if roomIDUint != 0 {
|
||||
db.DB.Model(&model.Room{}).Where("id = ?", roomIDUint).Updates(map[string]interface{}{"is_active": true})
|
||||
if err := db.SetRoomActive(roomIDUint, true); err != nil {
|
||||
monitor.Warnf("Failed to mark room active room_id=%s: %v", roomID, err)
|
||||
}
|
||||
}
|
||||
s.startVariantTranscoders(roomID)
|
||||
s.startThumbnailCapture(roomID)
|
||||
@@ -165,7 +166,9 @@ func NewRTMPServer() *RTMPServer {
|
||||
s.stopThumbnailCapture(roomID)
|
||||
roomIDUint := parseRoomID(roomID)
|
||||
if roomIDUint != 0 {
|
||||
db.DB.Model(&model.Room{}).Where("id = ?", roomIDUint).Updates(map[string]interface{}{"is_active": false})
|
||||
if err := db.SetRoomActive(roomIDUint, false); err != nil {
|
||||
monitor.Warnf("Failed to mark room inactive room_id=%s: %v", roomID, err)
|
||||
}
|
||||
}
|
||||
chat.MainHub.ClearRoomHistory(roomID)
|
||||
monitor.Infof("Publishing ended for room_id=%s", roomID)
|
||||
@@ -317,8 +320,8 @@ func (s *RTMPServer) HandleThumbnail(c *gin.Context) {
|
||||
|
||||
func (s *RTMPServer) resolvePublishPath(parts []string) (roomID string, channelPath string, isSource bool, ok bool) {
|
||||
if parts[1] == "live" && len(parts) == 3 {
|
||||
var room model.Room
|
||||
if err := db.DB.Where("stream_key = ?", parts[2]).First(&room).Error; err != nil {
|
||||
room, err := db.LoadRoomByStreamKey(parts[2])
|
||||
if err != nil {
|
||||
return "", "", false, false
|
||||
}
|
||||
roomID = fmt.Sprintf("%d", room.ID)
|
||||
|
||||
Reference in New Issue
Block a user