данные golang websocket не верны - PullRequest
       4

данные golang websocket не верны

0 голосов
/ 19 октября 2018

Я использую x.net.websocket для чтения данных из веб-сокета.Данные относительно велики.Когда я читаю это, я не могу прочитать это полностью, поэтому оно обрывается.Есть ли способ решить это?

func receiveWebsocket(ws *websocket.Conn) error {
    for {
        var msg = make([]byte, 1024*1024) // 1024kb
        m, err := ws.Read(msg) 
        if err != nil {
            log15.Error("ws read error", "error", err)
            return err
        }
        fmt.Println("length ---",m,  string(msg))
        response := string(msg[:m])
        assignmentWebsocket(response)
    }
}

Согласно журналу, значение m всегда равно 4092, даже если msg очень большое.

1 Ответ

0 голосов
/ 19 октября 2018

Первый вызов всегда читает меньше 4 КБ, и по соображениям безопасности длина ограничена, если вы хотите увеличить, установите:

ws.MaxPayloadBytes = xxxx

Со второго вызова ваш msg будет заполнен.

Если вы хотите прочитать сообщение целиком за один вызов, выполните:

msg, err := ioutil.ReadAll(ws)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...