@ZeroSkill

Как можно оптимизировать постоянную передачу больших строк, состоящих из десятичных чисел(websocket)?

Здравствуйте, я отправляю сервер - клиент БОЛЬШИЕ строки вида "0 2132 4636 33 1 1917 4267 22 2 1878 4060 36" , где кол - во чисел кратно 4, по вебсокет соединению. Как можно сжать или что то еще, что бы оптимизировать передачу этих строк. Читал про типизированные массивы(бинарные), но что то совсем не могу разобраться. Может в них как то можно все переводить и передавать?
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 2
MANAB
@MANAB
Разрабатываю на C#: Web, Desktop, Gamedev
Строка в твоем случае это массив char, где char занимает 1 или 2 байта, в зависимости от способа кодировки. int занимает 4 байта. Если у тебя числа например не выходят за диапазон 16384, т.е. 16 бит (2 байта), то можно сэкономить, упаковав их в бинарном виде. Хз как в javascript это делать, в C# через побитовые сдвиги например. https://stackoverflow.com/questions/5930166/packin...
В таком случае твоя строка "0 2132 4636 33 1 1917 4267 22 2 1878 4060 36" вместо 44(88) байт займет 24 байта, т.к. 12 чисел по 2 байта и разделители уже не нужны.
Ответ написан
Работать с массивом чисел, а не со строкой.
Запаковать в массив байтов и применить сжатие. Gzip, Deflate или что-то более специализированное, в зависимости от природы данных.
Взять хоть MessagePack или же самостоятельно:
https://developer.mozilla.org/ru/docs/Web/JavaScri...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы