From 01ebd8e2c39322d7266aef282c69a52ca0f1acdc Mon Sep 17 00:00:00 2001 From: qydysky <32743305+qydysky@users.noreply.github.com> Date: Tue, 31 Jan 2023 20:28:13 +0800 Subject: [PATCH] =?utf8?q?Fix=20ws=E4=B8=8D=E5=B9=B6=E5=8F=91=E5=86=99?= =?utf8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- websocket/Server.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/websocket/Server.go b/websocket/Server.go index 738938a..cef76fc 100644 --- a/websocket/Server.go +++ b/websocket/Server.go @@ -3,6 +3,7 @@ package part import ( "net" "net/http" + "sync" "time" "github.com/gorilla/websocket" @@ -13,6 +14,7 @@ import ( type Server struct { ws_mq *mq.Msgq userpool *idpool.Idpool + m sync.Mutex } type Uinterface struct { @@ -50,6 +52,8 @@ func (t *Server) WS(w http.ResponseWriter, r *http.Request) (o chan uintptr) { t.ws_mq.Pull_tag(map[string]func(interface{}) bool{ `send`: func(data interface{}) bool { if u, ok := data.(Uinterface); ok && u.Id == 0 || u.Id == User.Id { + t.m.Lock() + defer t.m.Unlock() if err := ws.WriteMessage(websocket.TextMessage, u.Data); err != nil { t.ws_mq.Push_tag(`error`, err) return true -- 2.39.2