Zorch review, use session.ID
to count running stream
This commit is contained in:
parent
b2eea597bd
commit
efbb284eb8
@ -425,9 +425,9 @@ func handleLive(w http.ResponseWriter, r *http.Request) {
|
|||||||
cursor := ch.que.Latest()
|
cursor := ch.que.Latest()
|
||||||
|
|
||||||
session, _ := sstore.Get(r, "moviesession")
|
session, _ := sstore.Get(r, "moviesession")
|
||||||
stats.addViewer(session)
|
stats.addViewer(session.ID)
|
||||||
avutil.CopyFile(muxer, cursor)
|
avutil.CopyFile(muxer, cursor)
|
||||||
stats.removeViewer(session)
|
stats.removeViewer(session.ID)
|
||||||
} else {
|
} else {
|
||||||
// Maybe HTTP_204 is better than HTTP_404
|
// Maybe HTTP_204 is better than HTTP_404
|
||||||
w.WriteHeader(http.StatusNoContent)
|
w.WriteHeader(http.StatusNoContent)
|
||||||
|
17
stats.go
17
stats.go
@ -4,7 +4,6 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gorilla/sessions"
|
|
||||||
"github.com/zorchenhimer/MovieNight/common"
|
"github.com/zorchenhimer/MovieNight/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -16,22 +15,22 @@ type streamStats struct {
|
|||||||
mutex sync.Mutex
|
mutex sync.Mutex
|
||||||
streamStart time.Time
|
streamStart time.Time
|
||||||
streamLive bool // True if live
|
streamLive bool // True if live
|
||||||
viewers map[*sessions.Session]int
|
viewers map[string]int
|
||||||
maxViewers int
|
maxViewers int
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *streamStats) addViewer(session *sessions.Session) {
|
func (s *streamStats) addViewer(id string) {
|
||||||
s.mutex.Lock()
|
s.mutex.Lock()
|
||||||
s.viewers[session] = len(s.viewers)
|
s.viewers[id] = len(s.viewers)
|
||||||
size := len(s.viewers)
|
size := len(s.viewers)
|
||||||
s.updateMaxViewers(size)
|
s.updateMaxViewers(size)
|
||||||
s.mutex.Unlock()
|
s.mutex.Unlock()
|
||||||
|
|
||||||
common.LogDebugf("[stats] %d viewer(s) connected\n", size)
|
common.LogDebugf("[stats] %d viewer(s) connected\n", size)
|
||||||
}
|
}
|
||||||
func (s *streamStats) removeViewer(session *sessions.Session) {
|
func (s *streamStats) removeViewer(id string) {
|
||||||
s.mutex.Lock()
|
s.mutex.Lock()
|
||||||
delete(s.viewers, session)
|
delete(s.viewers, id)
|
||||||
s.mutex.Unlock()
|
s.mutex.Unlock()
|
||||||
|
|
||||||
common.LogDebugf("[stats] One viewer left the stream\n")
|
common.LogDebugf("[stats] One viewer left the stream\n")
|
||||||
@ -47,8 +46,8 @@ func (s *streamStats) resetViewers() {
|
|||||||
s.viewers = sessionsMapNew()
|
s.viewers = sessionsMapNew()
|
||||||
}
|
}
|
||||||
|
|
||||||
func sessionsMapNew() map[*sessions.Session]int {
|
func sessionsMapNew() map[string]int {
|
||||||
return make(map[*sessions.Session]int)
|
return make(map[string]int)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newStreamStats() streamStats {
|
func newStreamStats() streamStats {
|
||||||
@ -132,7 +131,7 @@ func (s *streamStats) getMaxViewerCount() int {
|
|||||||
return s.maxViewers
|
return s.maxViewers
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *streamStats) getViewers() map[*sessions.Session]int {
|
func (s *streamStats) getViewers() map[string]int {
|
||||||
s.mutex.Lock()
|
s.mutex.Lock()
|
||||||
defer s.mutex.Unlock()
|
defer s.mutex.Unlock()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user