Я пытаюсь отправить сжатые zlib сообщения через WebSocket, используя Dart, но мне нужно иметь общий контекст, что бы это ни значило.У Discord gateway API есть что-то вроде этого, и это то, что я пытаюсь воспроизвести.Как я могу отправлять сжатые сообщения zlib, когда контекст используется совместно?
Я использую Dart 2.3.0.Первое сообщение, которое я отправляю, всегда работает, потому что оно должно иметь заголовок, а все сообщения заканчиваются на 0000 FFFF
.Но любые последующие сообщения отличаются, и я не могу сказать, что это такое.
Я сделал такие вещи, как удаление заголовка вручную и добавление суффикса вручную, но ничего не работает.Я могу гарантировать, что клиент, которого я использую, может правильно анализировать поток zlib.
Я знаю, что это плохо, но это всего лишь одна из тех вещей, которые я пытался как последняя надежда.
void sendData(List<int> data, {bool sendHeader = true}) {
if (socket.readyState != WebSocket.open) {
return;
}
List<int> encoded = List.from(zlib.encode(data));
if (!sendHeader) {
encoded = encoded.sublist(2);
}
encoded.addAll([0x00, 0x00, 0xff, 0xff]);
socket.add(encoded);
}
Некоторые другие вещи, которые я пробовал, - это создание нового экземпляра ZLibCodec
и установка raw
в значение true, затем его использование и добавление суффикса вручную.
Примечание. Позже я добавлю несколько примеров рабочих и нерабочих данных.