gob 등록

This commit is contained in:
2023-07-17 17:45:40 +09:00
parent 66aea48fb7
commit 29843802ff

View File

@ -116,6 +116,12 @@ var config wsConfig
func init() {
gocommon.LoadConfig(&config)
gob.Register(UpstreamMessage{})
gob.Register(commandMessage{})
gob.Register(map[string]any{})
gob.Register(primitive.A{})
gob.Register(primitive.M{})
gob.Register(primitive.ObjectID{})
}
func NewWebsocketHandler() (*WebsocketHandler, error) {
@ -339,9 +345,14 @@ func (sh *subhandler) mainLoop(ctx context.Context) {
}
}
var err error
enc := gob.NewEncoder(buffer)
if err := enc.Encode(usermsg); err == nil {
sh.redisSync.Publish(context.Background(), sh.redisMsgChanName, buffer).Result()
if err = enc.Encode(usermsg); err == nil {
_, err = sh.redisSync.Publish(context.Background(), sh.redisMsgChanName, buffer.Bytes()).Result()
}
if err != nil {
logger.Println("gob.Encode or publish failed :", err)
}
case *commandMessage:
@ -368,9 +379,13 @@ func (sh *subhandler) mainLoop(ctx context.Context) {
}
// 위에서 break 안걸리면 나한테 없으므로 publish를 해야 함. 그러면 다른 호스트가 deliveryChan으로 받는다
var err error
enc := gob.NewEncoder(buffer)
if err := enc.Encode(usermsg); err == nil {
sh.redisSync.Publish(context.Background(), sh.redisCmdChanName, buffer).Result()
if err = enc.Encode(usermsg); err == nil {
_, err = sh.redisSync.Publish(context.Background(), sh.redisCmdChanName, buffer.Bytes()).Result()
}
if err != nil {
logger.Println("gob.Encode or Publish failed :", err)
}
}