fix: concurrent write to websocket connection

pull/2866/head
withchao 10 months ago
parent 2b89def10e
commit af2f0209d6

@ -449,6 +449,8 @@ func (c *Client) handlerTextMessage(b []byte) error {
if err := c.conn.SetWriteDeadline(writeWait); err != nil {
return err
}
c.w.Lock()
defer c.w.Unlock()
return c.conn.WriteMessage(MessageText, msgData)
default:
return fmt.Errorf("not support message type %s", msg.Type)

@ -17,7 +17,6 @@ package msggateway
import (
"encoding/json"
"net/http"
"sync"
"time"
"github.com/openimsdk/tools/apiresp"
@ -56,7 +55,6 @@ type GWebSocket struct {
conn *websocket.Conn
handshakeTimeout time.Duration
writeBufferSize int
lock sync.Mutex
}
func newGWebSocket(protocolType int, handshakeTimeout time.Duration, wbs int) *GWebSocket {
@ -86,8 +84,6 @@ func (d *GWebSocket) GenerateLongConn(w http.ResponseWriter, r *http.Request) er
}
func (d *GWebSocket) WriteMessage(messageType int, message []byte) error {
d.lock.Lock()
defer d.lock.Unlock()
// d.setSendConn(d.conn)
return d.conn.WriteMessage(messageType, message)
}

Loading…
Cancel
Save