diff --git a/wshandler/wshandler.go b/wshandler/wshandler.go index 9a4880f..b6fd1b7 100644 --- a/wshandler/wshandler.go +++ b/wshandler/wshandler.go @@ -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) } }