Эликсир: HTTPResponseStream для использования потокового API

Я хочу написать клиент, который может использовать потоковые API. По сути, у вас есть геттер, который возвращает HTTPResponseStream вместо HTTPResponse. Я не смог найти его в HTTPotion, поэтому решил попробовать. Но я понятия не имею, как это сделать, и был бы очень признателен за помощь!


person tldr    schedule 30.05.2014    source источник


Ответы (1)


Вы можете выполнять асинхронные запросы с помощью HTTPotion следующим образом:

%HTTPotion.AsyncResponse{ id: id } = HTTPotion.get "http://example.com", [], [stream_to: self]

Это отправит сообщения трех разных типов текущему процессу (который определен выше через self):

# First, the response headers
%HTTPotion.AsyncHeaders{ id: ^id, status_code: 200, headers: _headers }
# Then, one or more chunks
%HTTPotion.AsyncChunk{ id: ^id, chunk: _chunk }
# And finally, an end message
%HTTPotion.AsyncEnd{ id: ^id }

Идентификатор может использоваться для обработки ответов от нескольких текущих запросов.

person bitwalker    schedule 01.06.2014