ruby – 使用sinatra流API的异步请求
发布时间:2020-12-16 19:34:58 所属栏目:百科 来源:网络整理
导读:我使用async_sinatra gem来实现异步路由,但我在某个地方发现了一个帖子,说可以使用Sinatra的流API来代替async_sinatra.可以使用流媒体实现以下相同的功能吗? require 'em-hiredis'require 'sinatra/async'class App Sinatra::Base register Sinatra::Async
我使用async_sinatra gem来实现异步路由,但我在某个地方发现了一个帖子,说可以使用Sinatra的流API来代替async_sinatra.可以使用流媒体实现以下相同的功能吗?
require 'em-hiredis' require 'sinatra/async' class App < Sinatra::Base register Sinatra::Async def redis @redis ||= EM::Hiredis.connect end aget '/' do redis.blpop('abcdef',15). callback {|x| body "x=#{x}"}. errback {|e| body "e=#{e}"} end run! if app_file == $0 end 解决方法
回答我自己的问题:
require 'em-hiredis' require 'sinatra/base' class App < Sinatra::Base def redis @redis ||= EM::Hiredis.connect end get '/' do stream :keep_open do |out| redis.blpop('abcdef',15).callback do |x| out << "x=#{x}" out.close end.errback do |e| out << "e=#{e}" out.close end end end run! if app_file == $0 end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |