File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -71,6 +71,7 @@ type WebSocketManager struct {
7171 writeChan chan []byte
7272 closeChan chan struct {}
7373 wg sync.WaitGroup
74+ mu sync.Mutex
7475}
7576
7677func NewWebSocketManager (conn * websocket.Conn ) * WebSocketManager {
@@ -92,7 +93,9 @@ func (wsm *WebSocketManager) writerLoop() {
9293 for {
9394 select {
9495 case message := <- wsm .writeChan :
96+ wsm .mu .Lock ()
9597 err := wsm .conn .WriteMessage (websocket .TextMessage , message )
98+ wsm .mu .Unlock ()
9699 if err != nil {
97100 printError ("WebSocket error: " + err .Error ())
98101 return
@@ -111,10 +114,14 @@ func (wsm *WebSocketManager) Write(message []byte) {
111114}
112115
113116func (wsm * WebSocketManager ) WritePing () error {
117+ wsm .mu .Lock ()
118+ defer wsm .mu .Unlock ()
114119 return wsm .conn .WriteMessage (websocket .PingMessage , []byte ("ping" ))
115120}
116121
117122func (wsm * WebSocketManager ) WriteClose (closeCode int , text string ) error {
123+ wsm .mu .Lock ()
124+ defer wsm .mu .Unlock ()
118125 return wsm .conn .WriteMessage (websocket .CloseMessage ,
119126 websocket .FormatCloseMessage (closeCode , text ))
120127}
You can’t perform that action at this time.
0 commit comments