|
@@ -25,7 +25,7 @@ func NewSocket(conn *websocket.Conn, pingEnable bool) *Socket {
|
|
pingEnable: pingEnable,
|
|
pingEnable: pingEnable,
|
|
}
|
|
}
|
|
ws.lastWrite.Store(time.Now().Unix())
|
|
ws.lastWrite.Store(time.Now().Unix())
|
|
- go ws.read()
|
|
|
|
|
|
+ ws.read()
|
|
return ws
|
|
return ws
|
|
}
|
|
}
|
|
|
|
|
|
@@ -66,26 +66,28 @@ func (s *Socket) read() {
|
|
}()
|
|
}()
|
|
// создаем канал для обработки входящих сообщений
|
|
// создаем канал для обработки входящих сообщений
|
|
chIn := s.exec()
|
|
chIn := s.exec()
|
|
- for {
|
|
|
|
- // Read message from server
|
|
|
|
- mType, r, err := s.conn.NextReader()
|
|
|
|
- if err != nil {
|
|
|
|
- s.cancel()
|
|
|
|
- log.Println(err)
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- switch mType {
|
|
|
|
- case websocket.TextMessage, websocket.BinaryMessage:
|
|
|
|
- // Обработка текстового или бинарного сообщения
|
|
|
|
- req, err := rest.ReadRequestStream(r)
|
|
|
|
|
|
+ go func() {
|
|
|
|
+ for {
|
|
|
|
+ // Read message from server
|
|
|
|
+ mType, r, err := s.conn.NextReader()
|
|
if err != nil {
|
|
if err != nil {
|
|
- log.Println("data error: ", err)
|
|
|
|
|
|
+ s.cancel()
|
|
|
|
+ log.Println(err)
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- log.Println("RESPONSE", req)
|
|
|
|
- chIn <- req
|
|
|
|
|
|
+ switch mType {
|
|
|
|
+ case websocket.TextMessage, websocket.BinaryMessage:
|
|
|
|
+ // Обработка текстового или бинарного сообщения
|
|
|
|
+ req, err := rest.ReadRequestStream(r)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Println("data error: ", err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ log.Println("RESPONSE", req)
|
|
|
|
+ chIn <- req
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ }()
|
|
}
|
|
}
|
|
|
|
|
|
// exec реализует обработку сообщений.
|
|
// exec реализует обработку сообщений.
|