func (cs *ClientServerImpl) WriteMessage(send []byte) error {
	cs.writeLock.Lock()
	defer cs.writeLock.Unlock()

	// This is just future proofing. Ignore the error as the gorilla websocket
	// library returns 'nil' anyway for SetWriteDeadline
	// https://github.com/gorilla/websocket/blob/4201258b820c74ac8e6922fc9e6b52f71fe46f8d/conn.go#L761
	if err := cs.conn.SetWriteDeadline(time.Now().Add(cs.RWTimeout)); err != nil {
		seelog.Warnf("Unable to set write deadline for websocket connection: %v for %s", err, cs.URL)
	}

	return cs.conn.WriteMessage(websocket.TextMessage, send)
}
func (cs *ClientServerImpl) WriteMessage(send []byte) error {
	cs.writeLock.Lock()
	defer cs.writeLock.Unlock()

	
	
	
	if err := cs.conn.SetWriteDeadline(time.Now().Add(cs.RWTimeout)); err != nil {
		seelog.Warnf("Unable to set write deadline for websocket connection: %v for %s", err, cs.URL)
	}

	return cs.conn.WriteMessage(websocket.TextMessage, send)
}
func ( cs * ClientServerImpl ) WriteMessage ( send [ ] byte ) error { cs . writeLock . Lock ( ) defer cs . writeLock . Unlock ( ) // This is just future proofing. Ignore the error as the gorilla websocket // library returns 'nil' anyway for SetWriteDeadline // https://github.com/gorilla/websocket/blob/4201258b820c74ac8e6922fc9e6b52f71fe46f8d/conn.go#L761 if err := cs . conn . SetWriteDeadline ( time . Now ( ) . Add ( cs . RWTimeout ) ) ; err != nil { seelog . Warnf ( " " , err , cs . URL ) } return cs . conn . WriteMessage ( websocket . TextMessage , send ) }
// WriteMessage wraps the low level websocket write method with a lock
WriteMessage wraps the low level websocket write method with a lock