mirror of
https://github.com/m1k1o/neko.git
synced 2024-07-24 14:40:50 +12:00
add members & host to stats.
This commit is contained in:
@ -51,11 +51,9 @@ func New(conf *config.Server, webSocketHandler types.WebSocketHandler) *Server {
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
if err := json.NewEncoder(w).Encode(struct{
|
||||
Connections uint32 `json:"connections"`
|
||||
}{
|
||||
Connections: webSocketHandler.TotalConns(),
|
||||
}); err != nil {
|
||||
|
||||
stats := webSocketHandler.Stats()
|
||||
if err := json.NewEncoder(w).Encode(stats); err != nil {
|
||||
logger.Warn().Err(err).Msg("failed writing json error response")
|
||||
}
|
||||
})
|
||||
|
@ -2,6 +2,12 @@ package types
|
||||
|
||||
import "net/http"
|
||||
|
||||
type Stats struct {
|
||||
Connections uint32 `json:"connections"`
|
||||
Host string `json:"host"`
|
||||
Members []*Member `json:"members"`
|
||||
}
|
||||
|
||||
type WebSocket interface {
|
||||
Address() string
|
||||
Send(v interface{}) error
|
||||
@ -12,6 +18,6 @@ type WebSocketHandler interface {
|
||||
Start() error
|
||||
Shutdown() error
|
||||
Upgrade(w http.ResponseWriter, r *http.Request) error
|
||||
TotalConns() uint32
|
||||
Stats() Stats
|
||||
IsAdmin(password string) (bool, error)
|
||||
}
|
||||
|
@ -198,8 +198,18 @@ func (ws *WebSocketHandler) Upgrade(w http.ResponseWriter, r *http.Request) erro
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ws *WebSocketHandler) TotalConns() uint32 {
|
||||
return atomic.LoadUint32(&ws.conns)
|
||||
func (ws *WebSocketHandler) Stats() types.Stats {
|
||||
host := ""
|
||||
session, ok := ws.sessions.GetHost()
|
||||
if ok {
|
||||
host = session.ID()
|
||||
}
|
||||
|
||||
return types.Stats{
|
||||
Connections: atomic.LoadUint32(&ws.conns),
|
||||
Host: host,
|
||||
Members: ws.sessions.Members(),
|
||||
}
|
||||
}
|
||||
|
||||
func (ws *WebSocketHandler) IsAdmin(password string) (bool, error) {
|
||||
|
Reference in New Issue
Block a user