Я хочу создать сервер, аналогичный Twitter Streaming API, чтобы клиент мог прочитать ответ в оставаться на связи в режиме реального времени. Как это сделать в Кристалле?
Как создать потоковый HTTP-сервер в Crystal?
Ответы (1)
Извлечено из этой проблемы:
@MakeNowJust говорит:
Вы должны добавить
\n
к отправленному тексту вgets
в клиенте и сделатьio.flush
.
require "http/server"
port = 5000
server = HTTP::Server.new(port) do |context|
loop do
context.response.puts "Something\n"
context.response.flush
sleep 1
end
end
puts "Listening on #{port}"
server.listen
@rx14 говорит:
crystal уже поддерживает запись фрагментированных ответов. Просто продолжайте писать в выходной ответ и вызывайте flush, когда хотите убедиться, что клиент получит сообщение. Если заголовок длины содержимого отсутствует, в ответе автоматически будет выбрана фрагментированная кодировка.
person
Vlad Faust
schedule
20.09.2017