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

Данные потоковой передачи восстания

У меня есть эта задача, которую я предпринимаю, когда буду читать данные с устройства и делать его доступным через веб-службу. Данные считываются 4 раза в секунду. Я хочу, чтобы веб-клиенты имели открытое HTTP-соединение и получали показания устройства как поток, используя chunked transfer, пока клиент поддерживает соединение открытый.

Как доказательство концепции, я хочу начать с службы, которая постоянно генерирует случайное число, 4 раза в секунду, обертывает его в json и передает его клиентам. Я пытаюсь моделировать его свободно на основе twitter streaming api.

Я использую restlet 2.1.2 для создания этого веб-сервиса, но я не уверен, какое представление я должен использовать для достижения этого. Я попытался найти это, но не нашел ничего полезного. Может ли кто-нибудь указать мне в правильном направлении относительно того, что я должен использовать, а может быть, и некоторых примеров.

Спасибо

4b9b3361

Ответ 1

Чтобы достичь того, что вы пытаетесь сделать, я бы использовал WriterRepresentation (но см. мой ответьте на другой вопрос), но я совершенно уверен, что вы идете в неправильном архитектурном направлении.

В самом деле, следующее изображение из документации, которую вы связали

enter image description here

показывает, как даже потоковая передача api для Twitter не предназначена для подключения пользователями, а фоновые процессы, которые загружают сообщения в хранилище, доступном HTTP. Пользователи опроса только HTTP-сервера, который читает сообщения из магазина и отправляет обратно клиентам.

Как протокол отключен, HTTP позволяет массировать масштабируемость, что было бы невозможно в противном случае. Если каждый клиент устанавливает соединение постоянное TCP, поддерживаемое выделенным потоком сервера, вы быстро расширяете ресурсы сервера! Более того, любой HTTP-прокси между User Agent и сервером может вызвать неожиданное поведение.

Таким образом, если вы привязаны к протоколу HTTP, , агент пользователя должен опросить. Вы можете уменьшить нагрузку на сеть с помощью заголовков, например Last-Modified/Если -Modified-Since или Etag/If-None -Матч.

Однако, если вы можете принять другой протокол, я настоятельно рекомендую попробовать служебную шину по подключенному протоколу TCP.