접속 종료를 그룹에 알림
This commit is contained in:
@ -39,4 +39,5 @@ type group interface {
|
||||
Dismiss(groupID primitive.ObjectID) error
|
||||
UpdateGroupDocument(groupID primitive.ObjectID, doc bson.M) error
|
||||
QueryGroupMembers(groupID primitive.ObjectID) (bson.M, error)
|
||||
MemberDisconnected(room string, mid primitive.ObjectID)
|
||||
}
|
||||
|
||||
@ -523,6 +523,21 @@ func (gm *groupInMemory) UpdateGroupDocument(gid groupID, frag bson.M) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (gm *groupInMemory) MemberDisconnected(room string, mid primitive.ObjectID) {
|
||||
midstr := mid.Hex()
|
||||
deleted, _ := gm.rh.JSONDel(room, "$._members."+midstr)
|
||||
if deleted > 0 {
|
||||
// 퇴장을 알림
|
||||
gm.sendUpstreamMessage(&wshandler.UpstreamMessage{
|
||||
Target: "#" + room,
|
||||
Body: bson.M{
|
||||
midstr: bson.M{},
|
||||
},
|
||||
Tag: []string{"MemberDocFull"},
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (cfg *groupConfig) prepareInMemory(ctx context.Context, typename string, sub *subTavern) (group, error) {
|
||||
// group document
|
||||
// member document
|
||||
|
||||
@ -217,6 +217,15 @@ func (sub *subTavern) OnClientMessageReceived(sender *wshandler.Sender, messageT
|
||||
if messageType == wshandler.Connected {
|
||||
logger.Println("OnClientMessageReceived : connected ", sender.Accid.Hex())
|
||||
} else if messageType == wshandler.Disconnected {
|
||||
var rooms []string
|
||||
dec := json.NewDecoder(body)
|
||||
if err := dec.Decode(&rooms); err == nil {
|
||||
for _, roomname := range rooms {
|
||||
for _, gt := range sub.groups {
|
||||
gt.MemberDisconnected(roomname, sender.Accid)
|
||||
}
|
||||
}
|
||||
}
|
||||
logger.Println("OnClientMessageReceived : disconnected ", sender.Accid.Hex())
|
||||
} else if messageType == wshandler.BinaryMessage {
|
||||
var msg map[string][]any
|
||||
|
||||
2
go.mod
2
go.mod
@ -5,7 +5,7 @@ go 1.20
|
||||
require (
|
||||
github.com/go-redis/redis/v8 v8.11.5
|
||||
go.mongodb.org/mongo-driver v1.11.7
|
||||
repositories.action2quare.com/ayo/gocommon v0.0.0-20230719003525-e0e911f9e7da
|
||||
repositories.action2quare.com/ayo/gocommon v0.0.0-20230719073844-112e037f4d4e
|
||||
)
|
||||
|
||||
require (
|
||||
|
||||
2
go.sum
2
go.sum
@ -134,3 +134,5 @@ repositories.action2quare.com/ayo/gocommon v0.0.0-20230719003337-29b2f258507d h1
|
||||
repositories.action2quare.com/ayo/gocommon v0.0.0-20230719003337-29b2f258507d/go.mod h1:PdpZ16O1czKKxCxn+0AFNaEX/0kssYwC3G8jR0V7ybw=
|
||||
repositories.action2quare.com/ayo/gocommon v0.0.0-20230719003525-e0e911f9e7da h1:aXkXUzD06heQQhbvLZurzo+QBDYQrXKjmoLsnv3IV/g=
|
||||
repositories.action2quare.com/ayo/gocommon v0.0.0-20230719003525-e0e911f9e7da/go.mod h1:PdpZ16O1czKKxCxn+0AFNaEX/0kssYwC3G8jR0V7ybw=
|
||||
repositories.action2quare.com/ayo/gocommon v0.0.0-20230719073844-112e037f4d4e h1:WoQVMfkti9XZesqlZfU0Lh7Luib4Y7pOKU2YExNvfmo=
|
||||
repositories.action2quare.com/ayo/gocommon v0.0.0-20230719073844-112e037f4d4e/go.mod h1:PdpZ16O1czKKxCxn+0AFNaEX/0kssYwC3G8jR0V7ybw=
|
||||
|
||||
Reference in New Issue
Block a user