From 29843802ff0eb6378af63b2a14de826a594f5a9e Mon Sep 17 00:00:00 2001 From: mountain Date: Mon, 17 Jul 2023 17:45:40 +0900 Subject: [PATCH] =?UTF-8?q?gob=20=EB=93=B1=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wshandler/wshandler.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) 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) } }