✨ Stream controller with client register/unregister events
This commit is contained in:
@ -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 {
|
||||
|
Reference in New Issue
Block a user