From 01668a54250da283feac4fe16b9669af7842e34a Mon Sep 17 00:00:00 2001 From: Xiaoguang Sun Date: Thu, 15 Sep 2022 12:54:45 +0800 Subject: [PATCH] Read all payloads from reader at once Reader might return before finish reading all pending bytes. This might cause event handling to fail randomly. Signed-off-by: Xiaoguang Sun --- server/ws_wrapper.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/ws_wrapper.go b/server/ws_wrapper.go index 819c393..c7bf096 100644 --- a/server/ws_wrapper.go +++ b/server/ws_wrapper.go @@ -19,7 +19,7 @@ func (wsw *wsWrapper) Write(p []byte) (n int, err error) { func (wsw *wsWrapper) Read(p []byte) (n int, err error) { for { - msgType, reader, err := wsw.Conn.NextReader() + msgType, bytes, err := wsw.Conn.ReadMessage() if err != nil { return 0, err } @@ -28,6 +28,7 @@ func (wsw *wsWrapper) Read(p []byte) (n int, err error) { continue } - return reader.Read(p) + copy(p, bytes) + return len(bytes), err } }