fix: concurrent write to websocket connection

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

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

Loading…
Cancel
Save