Я изучаю структуру Swift Vapor.
Я пытаюсь создать класс контроллера, который отображает данные, полученные по SSL-ссылке, на стороннюю систему (сервер АТС Asterisk ...) в тело ответа, которое через некоторое время отправляется клиенту.
Поэтому мне нужно отправлять полученные текстовые строки (полученные отдельно по SSL-соединению) по мере их поступления, не дожидаясь создания «полного ответа».
Видя этот пример:
return Response(status: .ok) { chunker in
for name in ["joe\n", "pam\n", "cheryl\n"] {
sleep(1)
try chunker.send(name)
}
try chunker.close()
}
Я подумал, что это может быть выход.
Но то, что я вижу при подключении к серверу Vapor, - это то, что вызов REST ожидает завершения цикла, прежде чем в результате будут получены три строки.
Как я могу получить возможность попробовать chunker.send (name) отправить его символы обратно клиенту, не дожидаясь завершения цикла?
В реальном коде метод контроллера потенциально может поддерживать соединение HTTP с клиентом открытым в течение длительного времени, отправляя данные активности Asterisk клиенту, как только они будут получены. Таким образом, каждый .send (name) должен фактически немедленно передавать данные клиенту, не дожидаясь последнего вызова .close ().
Добавление попытки chunker.flush () не дало лучшего результата ..