From a570815616a18608b640b17e447088f842f6745d Mon Sep 17 00:00:00 2001 From: Roman Vasilyev Date: Thu, 31 Jan 2019 23:10:02 -0800 Subject: [PATCH] critical for writing from mutiple threads --- recws.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recws.go b/recws.go index 4fee538..5f579ea 100644 --- a/recws.go +++ b/recws.go @@ -98,7 +98,9 @@ func (rc *RecConn) ReadMessage() (messageType int, message []byte, err error) { func (rc *RecConn) WriteMessage(messageType int, data []byte) error { err := ErrNotConnected if rc.IsConnected() { + rc.mu.Lock() err = rc.Conn.WriteMessage(messageType, data) + rc.mu.Unlock() if err != nil { rc.closeAndReconnect() } @@ -116,7 +118,9 @@ func (rc *RecConn) WriteMessage(messageType int, data []byte) error { func (rc *RecConn) WriteJSON(v interface{}) error { err := ErrNotConnected if rc.IsConnected() { + rc.mu.Lock() err = rc.Conn.WriteJSON(v) + rc.mu.Unlock() if err != nil { rc.closeAndReconnect() } @@ -210,7 +214,6 @@ func (rc *RecConn) setDefaultHandshakeTimeout() { } } - func (rc *RecConn) setDefaultDialer(handshakeTimeout time.Duration) { rc.mu.Lock() defer rc.mu.Unlock()