【问题标题】:How to create a streaming HTTP Server in Crystal?如何在 Crystal 中创建流式 HTTP 服务器?
【发布时间】:2017-09-19 10:56:56
【问题描述】:

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

【问题讨论】:

    标签: http chunked-encoding crystal-lang


    【解决方案1】:

    摘自此issue

    @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 说:

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

    【讨论】:

      猜你喜欢
      • 2022-08-19
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 2016-01-08
      • 2011-08-28
      • 1970-01-01
      • 2014-09-22
      相关资源
      最近更新 更多