Подтвердить что ты не робот

Streaming API vs Rest API?

Канонический пример здесь - API Twitter. Я понимаю концептуально, как работает REST API, в основном его просто запрос на свой сервер для вашего конкретного запроса, в котором вы затем получаете ответ (JSON, XML и т.д.), Отлично.

Однако я не совсем уверен, как работает потоковый API за кулисами. Я понимаю, как его использовать. Например, с помощью Twitter послушайте ответ. Из ответа слушайте данные и в которых твиты входят в куски. Создайте куски в строчном буфере и дождитесь подачи строки, что означает конец Tweet. Но что они делают, чтобы сделать эту работу?

Скажем, у меня была куча данных, и я хотел настроить потоковый API локально для других людей в сети, чтобы потреблять (так же, как Twitter). Как это делается, какие технологии? Может ли это что-то Node JS? Я просто пытаюсь оборачивать голову тем, что они делают, чтобы заставить эту работу работать.

4b9b3361

Ответ 1

API-интерфейс Twitter-потока состоит в том, что он по существу является долговременным запросом, который остается открытым, данные вставляются в него по мере его появления.

Это связано с тем, что серверу придется иметь дело с множеством параллельных открытых HTTP-соединений (по одному на каждого клиента). Многие существующие серверы не справляются с этим, например, механизмы сервлетов Java присваивают один поток для каждого запроса, который может (а) стать довольно дорогим и (б) быстро попадает в нормальный режим максимальных потоков и предотвращает последующие соединения.

Как вы уже догадались, модель Node.js лучше подходит для идеи потокового соединения, чем, скажем, модель сервлета. Оба запроса и ответы отображаются как потоки в Node.js, но не занимают весь поток или процесс, а это означает, что вы можете продолжать толкать данные в поток до тех пор, пока он остается открытым, не связывая чрезмерные ресурсы ( хотя это субъективно). Теоретически у вас может быть много одновременных открытых ответов, связанных с одним процессом, и при необходимости писать только каждому.

Если вы еще не посмотрели на него, может оказаться полезным HTTP-документы для Node.js.

Я также посмотрю техноийский клиент Twitter, чтобы узнать, чем выглядит потребительский интерфейс этого API с помощью Node.js, функция stream() в частности.