접속 종료를 그룹에 알림
This commit is contained in:
@ -39,4 +39,5 @@ type group interface {
|
|||||||
Dismiss(groupID primitive.ObjectID) error
|
Dismiss(groupID primitive.ObjectID) error
|
||||||
UpdateGroupDocument(groupID primitive.ObjectID, doc bson.M) error
|
UpdateGroupDocument(groupID primitive.ObjectID, doc bson.M) error
|
||||||
QueryGroupMembers(groupID primitive.ObjectID) (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
|
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) {
|
func (cfg *groupConfig) prepareInMemory(ctx context.Context, typename string, sub *subTavern) (group, error) {
|
||||||
// group document
|
// group document
|
||||||
// member document
|
// member document
|
||||||
|
|||||||
@ -217,6 +217,15 @@ func (sub *subTavern) OnClientMessageReceived(sender *wshandler.Sender, messageT
|
|||||||
if messageType == wshandler.Connected {
|
if messageType == wshandler.Connected {
|
||||||
logger.Println("OnClientMessageReceived : connected ", sender.Accid.Hex())
|
logger.Println("OnClientMessageReceived : connected ", sender.Accid.Hex())
|
||||||
} else if messageType == wshandler.Disconnected {
|
} 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())
|
logger.Println("OnClientMessageReceived : disconnected ", sender.Accid.Hex())
|
||||||
} else if messageType == wshandler.BinaryMessage {
|
} else if messageType == wshandler.BinaryMessage {
|
||||||
var msg map[string][]any
|
var msg map[string][]any
|
||||||
|
|||||||
2
go.mod
2
go.mod
@ -5,7 +5,7 @@ go 1.20
|
|||||||
require (
|
require (
|
||||||
github.com/go-redis/redis/v8 v8.11.5
|
github.com/go-redis/redis/v8 v8.11.5
|
||||||
go.mongodb.org/mongo-driver v1.11.7
|
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 (
|
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-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 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-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