Discord Gateway etf "Список не заканчивается маркером хвоста, но он должен!"ошибка - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь прочесть данные, которые поступают через соединение discord gateway (websocket).

Текущей конфигурацией по умолчанию для discord является URL-адрес websocket wss://gateway.discord.gg/?encoding=etf&v=6&compress=zlib-stream.Это означает, что данные кодируются в etf и сжимаются с использованием zlib.

Я попытался автоматически распаковать и расшифровать данные, используя сборку nodejs в модуле zlib и модуль erlpack из discord.По большей части как декомпрессия, так и дешифрование работают, но иногда после декомпрессии, когда я звоню erlpack.unpack(data), я получаю сообщение об ошибке List doesn't end with a tail marker, but it must!.Я не совсем уверен, почему я получаю эту ошибку, я имею в виду, что данные поступают прямо с серверов разногласий, поэтому они должны быть целыми.

Это более или менее код, который отвечает за часть декодирования / дешифрования:

let inflater = zlib.createInflate();
inflater.on("data", (uncompressedData) => {
   let obj = erlpack.unpack(uncompressedData);
   console.log(obj);
});
inflater.write(data);

Не знаю, поможет ли это, но вот код github для декодера erlpack .Кто-нибудь знает, как решить эту проблему или знает, что я делаю не так?

...