[MM-40485] Enable receiving binary websocket messages (#19128)

* Enable receiving binary websocket messages

* Improve error message

* Prefer anonymous declaration

* Simplify

* Improve test

* Use MessagePack to clone WebSocketRequest struct

* Use short form

* Fix test
Этот коммит содержится в:
Claudio Costa
2021-12-07 15:24:18 +01:00
коммит произвёл GitHub
родитель 64fb04a9e9
Коммит 6d361db638
5 изменённых файлов: 148 добавлений и 12 удалений

Просмотреть файл

@@ -17,6 +17,7 @@ import (
"time"
"github.com/gorilla/websocket"
"github.com/vmihailenco/msgpack/v5"
"github.com/mattermost/mattermost-server/v6/model"
"github.com/mattermost/mattermost-server/v6/plugin"
@@ -343,9 +344,23 @@ func (wc *WebConn) readPump() {
})
for {
msgType, rd, err := wc.WebSocket.NextReader()
if err != nil {
wc.logSocketErr("websocket.NextReader", err)
return
}
var decoder interface {
Decode(v interface{}) error
}
if msgType == websocket.TextMessage {
decoder = json.NewDecoder(rd)
} else {
decoder = msgpack.NewDecoder(rd)
}
var req model.WebSocketRequest
if err := wc.WebSocket.ReadJSON(&req); err != nil {
wc.logSocketErr("websocket.read", err)
if err = decoder.Decode(&req); err != nil {
wc.logSocketErr("websocket.Decode", err)
return
}