diff --git a/transport/internet/ws/wsconn.go b/transport/internet/ws/wsconn.go index 89173015..53ec6a37 100644 --- a/transport/internet/ws/wsconn.go +++ b/transport/internet/ws/wsconn.go @@ -81,31 +81,33 @@ func (ws *wsconn) Write(b []byte) (n int, err error) { ws.wlock.Lock() if ws.connClosing { - return 0, io.EOF } - writeWs := func(b []byte) (n int, err error) { - wr, err := ws.wsc.NextWriter(websocket.BinaryMessage) - if err != nil { - log.Warning("WS transport: ws connection NewFrameReader return " + err.Error()) - ws.connClosing = true - ws.Close() - return 0, err - } - n, err = wr.Write(b) - if err != nil { - return 0, err - } - err = wr.Close() - if err != nil { - return 0, err - } - return n, err - } - n, err = writeWs(b) + + n, err = ws.write(b) ws.wlock.Unlock() return n, err } + +func (ws *wsconn) write(b []byte) (n int, err error) { + wr, err := ws.wsc.NextWriter(websocket.BinaryMessage) + if err != nil { + log.Warning("WS transport: ws connection NewFrameReader return " + err.Error()) + ws.connClosing = true + ws.Close() + return 0, err + } + n, err = wr.Write(b) + if err != nil { + return 0, err + } + err = wr.Close() + if err != nil { + return 0, err + } + return n, err +} + func (ws *wsconn) Close() error { ws.connClosing = true ws.wlock.Lock()