From 40fb698748aab4c9b684d323c6c4ebfd021048dd Mon Sep 17 00:00:00 2001 From: mountain Date: Thu, 1 Feb 2024 18:29:24 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9B=B9=EC=86=8C=EC=BC=93=20=EB=A9=94?= =?UTF-8?q?=EC=8B=9C=EC=A7=80=20=EC=A0=84=EC=86=A1=20=EC=B1=84=EB=84=90=20?= =?UTF-8?q?=EB=8B=A8=EC=9D=BC=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/connection.go | 12 ++++-------- core/friend.go | 13 +++---------- core/social.go | 2 +- go.mod | 7 ++++--- go.sum | 6 ++++++ 5 files changed, 18 insertions(+), 22 deletions(-) diff --git a/core/connection.go b/core/connection.go index 01a519c..3a13d78 100644 --- a/core/connection.go +++ b/core/connection.go @@ -7,7 +7,6 @@ import ( "github.com/gorilla/websocket" "go.mongodb.org/mongo-driver/bson/primitive" "repositories.action2quare.com/ayo/gocommon" - "repositories.action2quare.com/ayo/gocommon/logger" "repositories.action2quare.com/ayo/gocommon/wshandler" ) @@ -20,6 +19,7 @@ type connWithFriends struct { type connections struct { connLock sync.Mutex conns map[primitive.ObjectID]*connWithFriends + wsh *wshandler.WebsocketHandler redison *gocommon.RedisonHandler } @@ -90,12 +90,7 @@ func (cs *connections) writeMessage(acc primitive.ObjectID, src any) { } if bt, err := json.Marshal(src); err == nil { - pmsg, err := websocket.NewPreparedMessage(websocket.TextMessage, bt) - if err != nil { - logger.Println("connections.writeMessage failed :", err) - } else { - conn.c.WritePreparedMessage(pmsg) - } + cs.wsh.WriteDirectMessage(conn.c, websocket.TextMessage, bt) } } @@ -109,9 +104,10 @@ func (cs *connections) ClientDisconnected(msg string, callby *wshandler.Sender) cs.delete(callby.Accid) } -func makeConnections(redison *gocommon.RedisonHandler) *connections { +func makeConnections(redison *gocommon.RedisonHandler, wsh *wshandler.WebsocketHandler) *connections { return &connections{ conns: make(map[primitive.ObjectID]*connWithFriends), + wsh: wsh, redison: redison, } } diff --git a/core/friend.go b/core/friend.go index 5039240..898444c 100644 --- a/core/friend.go +++ b/core/friend.go @@ -144,12 +144,7 @@ func makeFriends(ctx context.Context, so *Social, conns *connections) (*friends, } if exists && srcmap != nil && len(srcmap.lastState) > 0 { - pmsg, err := websocket.NewPreparedMessage(websocket.TextMessage, srcmap.lastState) - if err != nil { - logger.Println("makeFriends.NewPreparedMessage failed :", err) - } else { - reg.l.c.WritePreparedMessage(pmsg) - } + so.wsh.WriteDirectMessage(reg.l.c, websocket.TextMessage, srcmap.lastState) } if len(srcmap.listeners) == 0 && len(srcmap.lastState) == 0 { @@ -172,15 +167,13 @@ func makeFriends(ctx context.Context, so *Social, conns *connections) (*friends, delete(listeners, target) } - pmsg, _ := websocket.NewPreparedMessage(websocket.TextMessage, srcmap.offline) for _, l := range srcmap.listeners { - l.c.WritePreparedMessage(pmsg) + so.wsh.WriteDirectMessage(l.c, websocket.TextMessage, srcmap.offline) } } else { srcmap.lastState = []byte(state) - pmsg, _ := websocket.NewPreparedMessage(websocket.TextMessage, srcmap.lastState) for _, l := range srcmap.listeners { - l.c.WritePreparedMessage(pmsg) + so.wsh.WriteDirectMessage(l.c, websocket.TextMessage, srcmap.lastState) } } } else if len(state) > 0 { diff --git a/core/social.go b/core/social.go index a2760da..6438927 100644 --- a/core/social.go +++ b/core/social.go @@ -80,7 +80,7 @@ func (so *Social) prepare(ctx context.Context) error { so.redison = gocommon.NewRedisonHandler(redisClient.Context(), redisClient) - connections := makeConnections(so.redison) + connections := makeConnections(so.redison, so.wsh) so.wsh.AddHandler(wshandler.MakeWebsocketApiHandler(connections, "social")) so.httpApiBorker.AddHandler(gocommon.MakeHttpApiHandler(connections, "social")) diff --git a/go.mod b/go.mod index 602ca57..bade9ee 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.20 require ( github.com/go-redis/redis/v8 v8.11.5 - github.com/gorilla/websocket v1.5.0 + github.com/gorilla/websocket v1.5.1 go.mongodb.org/mongo-driver v1.11.7 repositories.action2quare.com/ayo/gocommon v0.0.0-20240122081445-b100148f54a3 ) @@ -22,8 +22,9 @@ require ( github.com/xdg-go/scram v1.1.2 // indirect github.com/xdg-go/stringprep v1.0.4 // indirect github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect - golang.org/x/crypto v0.10.0 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/text v0.10.0 // indirect + golang.org/x/text v0.13.0 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect ) diff --git a/go.sum b/go.sum index c39b984..373e32a 100644 --- a/go.sum +++ b/go.sum @@ -16,6 +16,8 @@ github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.16.6 h1:91SKEy4K37vkp255cJ8QesJhjyRO0hn9i9G0GoUwLsk= github.com/klauspost/compress v1.16.6/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= @@ -61,6 +63,7 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -68,6 +71,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -90,6 +95,7 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=