Как создать поток zlib с общим контекстом - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь отправить сжатые 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, затем его использование и добавление суффикса вручную.

Примечание. Позже я добавлю несколько примеров рабочих и нерабочих данных.

...