Websocket stream control count connection for specific user

This commit is contained in:
2024-07-14 23:49:34 +08:00
parent 8f996bb697
commit 7812a06cb1
5 changed files with 228 additions and 36 deletions

View File

@ -7,6 +7,13 @@ import (
"git.solsynth.dev/hydrogen/dealer/pkg/proto"
)
func (v *Server) CountStreamConnection(ctx context.Context, request *proto.CountConnectionRequest) (*proto.CountConnectionResponse, error) {
out := services.ClientCount(uint(request.GetUserId()))
return &proto.CountConnectionResponse{
Count: int64(out),
}, nil
}
func (v *Server) PushStream(ctx context.Context, request *proto.PushStreamRequest) (*proto.PushStreamResponse, error) {
cnt, success, errs := services.WebsocketPush(uint(request.GetUserId()), request.GetBody())
if len(errs) > 0 {

View File

@ -29,6 +29,10 @@ func ClientUnregister(user models.Account, conn *websocket.Conn) {
wsMutex.Unlock()
}
func ClientCount(uid uint) int {
return len(wsConn[uid])
}
func WebsocketPush(uid uint, body []byte) (count int, success int, errs []error) {
for conn := range wsConn[uid] {
if err := conn.WriteMessage(1, body); err != nil {