Как создать потоковый HTTP-сервер в Crystal?

Я хочу создать сервер, аналогичный Twitter Streaming API, чтобы клиент мог прочитать ответ в оставаться на связи в режиме реального времени. Как это сделать в Кристалле?


person Vlad Faust    schedule 19.09.2017    source источник


Ответы (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