如何在Crystal中创建流式HTTP服务器?

问题描述:

我想创建一个类似于Twitter Streaming API的服务器,所以客户端可以实时读取响应保持连接。如何在Crystal中做到这一点?如何在Crystal中创建流式HTTP服务器?

从这个issue提取:

@MakeNowJust说:

你应该在客户追加\n来发送文本getsio.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说:

晶体已经处理了写作分块响应。只需继续写入输出响应,并在想要确保客户端收到消息时调用flush。如果没有内容长度标题,响应会自动为您选择分块编码。