Ожидает ли multipart / x-mixed-replace клиентских запросов? - PullRequest
3 голосов
/ 10 января 2009

Я пытаюсь выяснить, возможно ли замедлить работу сервера при отправке ответов multipart / xmixed-replace. Я хочу, чтобы мой клиент пытался ограничить скорость потока в формате JPEG. Я нашел много документации о том, что сервер отправляет в ответе HTTP, но ничего о том, что клиент отправляет.

Что отправляет клиент, если что-нибудь, после каждой части в ответе multipart / x-mixed-replace? Если он ничего не отправляет, сервер просто копит части?

Ответы [ 3 ]

1 голос
/ 10 января 2009

На самом деле, я думаю, что составная часть - это красная сельдь, потому что концепция составной части состоит в том, чтобы просто разграничить типы контента в одном теле сообщения. Таким образом, с точки зрения сервера (с точки зрения скорости, с которой отправляется контент), он на самом деле не отличается от отправки одного большого куска данных.

Итак, мне интересно, можете ли вы, чтобы заголовок Range мог запрашивать только определенный диапазон - по одной "части" за раз.

Начните считать байты с конца заголовков ответа. Когда вы дойдете до конца первой части, запишите количество прочитанных байтов и закройте соединение. Отправить заявку на тот же документ, но в качестве байтов в конце фрагмента укажите начальный диапазон. Снова, прочитайте ответ, когда вы достигнете конца части, добавьте текущие байты ответа к предыдущему, закроете соединение и повторите ad nauseam ...

Не пробовал, но похоже, что он будет работать при условии, что сервер поддерживает заголовки диапазона, и при условии, что вы сможете сделать некоторые исправления на стороне клиента.

Может быть проще написать клиентский прокси, который ограничивает скорость, отбрасывая пакеты ...

0 голосов
/ 10 января 2009

На уровне HTTP я не думаю, что клиент отправляет что-либо. Сервер предполагает, что, пока соединение открыто, он может продолжать отправлять ответ.

Я не думаю, что существует простое решение проблемы на уровне HTTP, потому что в обмене клиент-сервер нет понятия "ack".

Очевидно, существуют решения этой проблемы на уровне TCP- / IP.

Мне интересно, может ли клиент сделать что-то по-другому, когда он на самом деле получает заголовки ответа сервера и распознает, что ответ является многочастным - может ли он тогда прервать соединение и открыть новое, не поддерживать соединение и просто получить части один за другим ...

0 голосов
/ 10 января 2009

Попробуйте использовать плагин LiveHTTPHeaders для Mozilla. Я пошел в Gmail (который использует AJAX) и следил за разговором между клиентом и сервером в течение нескольких минут. Кажется, это может помочь вам.

...