Compare commits

..

2 Commits

Author SHA1 Message Date
f96058057d ccu metric 추가 2023-11-16 19:59:25 +09:00
be15f3f854 모듈 업데이트 2023-11-16 19:59:13 +09:00
3 changed files with 11 additions and 9 deletions

View File

@ -7,6 +7,7 @@ import (
"net" "net"
"net/http" "net/http"
"strings" "strings"
"sync/atomic"
"time" "time"
"github.com/go-redis/redis/v8" "github.com/go-redis/redis/v8"
@ -14,6 +15,7 @@ import (
"repositories.action2quare.com/ayo/gocommon" "repositories.action2quare.com/ayo/gocommon"
"repositories.action2quare.com/ayo/gocommon/flagx" "repositories.action2quare.com/ayo/gocommon/flagx"
"repositories.action2quare.com/ayo/gocommon/logger" "repositories.action2quare.com/ayo/gocommon/logger"
"repositories.action2quare.com/ayo/gocommon/metric"
"repositories.action2quare.com/ayo/gocommon/session" "repositories.action2quare.com/ayo/gocommon/session"
"repositories.action2quare.com/ayo/gocommon/wshandler" "repositories.action2quare.com/ayo/gocommon/wshandler"
@ -21,6 +23,8 @@ import (
) )
var devflag = flagx.Bool("dev", false, "") var devflag = flagx.Bool("dev", false, "")
var totalCCUWriter = metric.NewMetric(metric.MetricGuage, "concurrent_user", "current connected user count")
var ccu = int64(0)
type TavernConfig struct { type TavernConfig struct {
session.SessionConfig `json:",inline"` session.SessionConfig `json:",inline"`
@ -79,6 +83,7 @@ func New(context context.Context, wsh *wshandler.WebsocketHandler) (*Tavern, err
} }
func (tv *Tavern) Cleanup() { func (tv *Tavern) Cleanup() {
totalCCUWriter(0)
tv.mongoClient.Close() tv.mongoClient.Close()
} }
@ -136,6 +141,7 @@ func (tv *Tavern) LeaveChannel(ctx wshandler.ApiCallContext) {
} }
func (tv *Tavern) ClientConnected(conn *websocket.Conn, callby *wshandler.Sender) { func (tv *Tavern) ClientConnected(conn *websocket.Conn, callby *wshandler.Sender) {
totalCCUWriter(float64(atomic.AddInt64(&ccu, 1)))
tv.redison.Del(tv.redison.Context(), callby.Accid.Hex()) tv.redison.Del(tv.redison.Context(), callby.Accid.Hex())
_, err := tv.redison.JSONSet(callby.Accid.Hex(), "$", bson.M{"_ts": time.Now().UTC().Unix()}) _, err := tv.redison.JSONSet(callby.Accid.Hex(), "$", bson.M{"_ts": time.Now().UTC().Unix()})
if err != nil { if err != nil {
@ -144,6 +150,8 @@ func (tv *Tavern) ClientConnected(conn *websocket.Conn, callby *wshandler.Sender
} }
func (tv *Tavern) ClientDisconnected(msg string, callby *wshandler.Sender) { func (tv *Tavern) ClientDisconnected(msg string, callby *wshandler.Sender) {
totalCCUWriter(float64(atomic.AddInt64(&ccu, -1)))
tv.redison.Del(tv.redison.Context(), callby.Accid.Hex()).Result() tv.redison.Del(tv.redison.Context(), callby.Accid.Hex()).Result()
} }

2
go.mod
View File

@ -6,7 +6,7 @@ require (
github.com/go-redis/redis/v8 v8.11.5 github.com/go-redis/redis/v8 v8.11.5
github.com/gorilla/websocket v1.5.0 github.com/gorilla/websocket v1.5.0
go.mongodb.org/mongo-driver v1.11.7 go.mongodb.org/mongo-driver v1.11.7
repositories.action2quare.com/ayo/gocommon v0.0.0-20231016010153-0f302437251f repositories.action2quare.com/ayo/gocommon v0.0.0-20231116105647-72a62b678f83
) )
require ( require (

10
go.sum
View File

@ -104,11 +104,5 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
repositories.action2quare.com/ayo/gocommon v0.0.0-20230911034515-1af5d7281946 h1:YSvgTNuHeKis37+FfOvzVLYCaXQ0oF+CWBTy4bRqq3g= repositories.action2quare.com/ayo/gocommon v0.0.0-20231116105647-72a62b678f83 h1:0X/ZTLb71JQ+ksZyPdLkxAHz9nDTT+/qRjV/zYBzlMc=
repositories.action2quare.com/ayo/gocommon v0.0.0-20230911034515-1af5d7281946/go.mod h1:XvklTTSvQX5uviivGBcZo8eIL+mV94W2e4uBBXcT5JY= repositories.action2quare.com/ayo/gocommon v0.0.0-20231116105647-72a62b678f83/go.mod h1:XvklTTSvQX5uviivGBcZo8eIL+mV94W2e4uBBXcT5JY=
repositories.action2quare.com/ayo/gocommon v0.0.0-20230919095017-49a3722a7e09 h1:KYpRt/gjwYePPIWLit+PVCF7V3FGyZXQ+0U7bTKH+sE=
repositories.action2quare.com/ayo/gocommon v0.0.0-20230919095017-49a3722a7e09/go.mod h1:XvklTTSvQX5uviivGBcZo8eIL+mV94W2e4uBBXcT5JY=
repositories.action2quare.com/ayo/gocommon v0.0.0-20231012030311-0fb806bfda1e h1:WQmrM33bgcAJ1PRz/uaz1tyZxpSDOuuGl0ICJdh4K9U=
repositories.action2quare.com/ayo/gocommon v0.0.0-20231012030311-0fb806bfda1e/go.mod h1:XvklTTSvQX5uviivGBcZo8eIL+mV94W2e4uBBXcT5JY=
repositories.action2quare.com/ayo/gocommon v0.0.0-20231016010153-0f302437251f h1:S7J6nGOwe5c+JEXbdI0rZshVvEXZCFjUAY9e7Wd91tY=
repositories.action2quare.com/ayo/gocommon v0.0.0-20231016010153-0f302437251f/go.mod h1:XvklTTSvQX5uviivGBcZo8eIL+mV94W2e4uBBXcT5JY=