Ну если у Вас в очереди, на запись 20 пакетов, с перекрывающимися данными, зачем отсылать все 20, если можно отослать один. Смысл задержки в накоплении изменений. Отсылать можно с допустимой задержкой, для человека это не заметно. Как много раз Вы реагируете на смену кадра, наблюдаете сигнал синхронизации? В этом нет ничего странного, это известная практика, алгоритм Нейгла тот же, он сделан для других целей, но тот же принцип. Придерживая мы избавляемся от ненужных данных для сети и нагрузки как на стороне пользователя, так и на сервере. Просто придерживать до приделов допустимой дельты, её можно легко рассчитать, по активности входящего и исходящего трафика. Посылая эти 20 пакетов, поток отрисовки пройдет по ним холостым ходом, отобразиться только последние обработанные изменение. А может там вообще при приходе этого пакеты вызывается перерисовка сцены, отсюдова может быть накладные расходы, на стороне клиента.
Потом на каждый параметр в отдельности можно рассчитать дельту и придерживать отдельные группы. Опять же надо считать, мат. часть.
У меня просто нету бесконечного прироста скорости и квантового компьютера. Насколько мне известно при отключенном алгоритме Нейгла, Вы отсылаете данные без задержки, по сути сами формируете кадры. Сам TCP гарантирует доставку каждого пакета MTU. Проверка каждого пакета, на доставку, это накладные расходы, если превысить MTU на 1 байт это уже два пакета, насколько мне известно.
Вот Вам пример:
где:
PHP код:
delay check = time check * (send data size / MTU)
send data size - размер данных при отправке.
time check - время проверки на доставку
send data size / MTU - количество пакетов (целочисленное деление без остатка)
delay check - задержки на проверку, доставки.
+ еще общая потеря данных при отправке возникнуть может, повторная отправка.
Размер данных можно подставить любой
даже умножить размер пакета в байтах на количество, а если вычесть один, из количества, получите избыточность.
Для однотипных пакетов
PHP код:
send data size = packet size * packet count
packet size - размер пакета сервера(того же UpdateStatus)
packet count - количество пакетов
packet size * (packet count - 1) избыточность информации, она превышает 90% процентов, это тихий ужас.
send data size <= MTU в пределах допустимой нагрузки канала
send data size > MTU увеличивает нагрузку на канал
можно
PHP код:
send data size = packet size * packet count + сustom data
custom data - сума размеров остальных пакетов, которые записываются в поток.
Просто посмотрев на результат после подстановки можно понять стоит это делать или нет, но в данном случае и так понятно, что реализация сервера, повторюсь, топорная, на оптимизацию или какие-то особые алгоритмы не "заточена". Все пользуются alpha сервером.
Это решение задачи в конкретных условиях.