Stream controller with client register/unregister events

This commit is contained in:
2024-07-20 19:47:04 +08:00
parent 607eba001f
commit 037fc8a18c
4 changed files with 224 additions and 25 deletions

View File

@ -1,9 +1,13 @@
package services
import (
"context"
"sync"
"git.solsynth.dev/hydrogen/dealer/pkg/hyper"
"git.solsynth.dev/hydrogen/dealer/pkg/internal/directory"
"git.solsynth.dev/hydrogen/dealer/pkg/internal/models"
"git.solsynth.dev/hydrogen/dealer/pkg/proto"
"github.com/gofiber/contrib/websocket"
)
@ -19,6 +23,14 @@ func ClientRegister(user models.Account, conn *websocket.Conn) {
}
wsConn[user.ID][conn] = true
wsMutex.Unlock()
pc, err := directory.GetServiceInstanceByType(hyper.ServiceTypeAuthProvider).GetGrpcConn()
if err == nil {
proto.NewStreamControllerClient(pc).EmitStreamEvent(context.Background(), &proto.StreamEventRequest{
Event: "ClientRegister",
UserId: uint64(user.ID),
})
}
}
func ClientUnregister(user models.Account, conn *websocket.Conn) {
@ -28,6 +40,14 @@ func ClientUnregister(user models.Account, conn *websocket.Conn) {
}
delete(wsConn[user.ID], conn)
wsMutex.Unlock()
pc, err := directory.GetServiceInstanceByType(hyper.ServiceTypeAuthProvider).GetGrpcConn()
if err == nil {
proto.NewStreamControllerClient(pc).EmitStreamEvent(context.Background(), &proto.StreamEventRequest{
Event: "ClientUnregister",
UserId: uint64(user.ID),
})
}
}
func ClientCount(uid uint) int {