RSS
热门关键字:  java  Ajax  JSP  JSF  Struts
当前位置 : 首页>Ruby>列表

Ruby on Rails + AJAX + Mongrel + JMS/MQ/MOM = 即时通讯

来源: 作者: 时间:2007-09-19 点击:
  •         end   
  •       }   
  •     rescue Timeout::Error   
  •       # do nothing, timeout is expected   
  •     end   
  •      
  •     return output   
  •   end   
  •      
  •   def write_response(response, output)   
  •     response.start(200) do |head, out|       
  •       head["Content-Type"] = "text/xml"   
  •       out.write "<ajax-response>\n<response id='#{ID}' destination='#{DEST}'>"   
  •       out.write output   
  •       out.write "</response>\n</ajax-response>"   
  •     end   
  •   end   
  • end   
  •   
  • uri URL, :handler => AmqHandler.new, :in_front => true  
  •  

    终于到了最重要的档案了,ajax_mq_handler.rb 延申了 Mongrel::HttpHandler,Mongrel 会把 Request 和 Response object 交给 Handler。它会如 producer 一样连接去 AMQ。不同的是它只接收讯息 (技术上可以做到发讯息,但基于安全和懒的理由暂时不作这部份)。这里使用了 Timeout ,在 30 秒内没有新讯息的话它会返回 timeout 的讯息。如果在 timeout 前有讯息,它会尝试返回全部讯息。编写 HttpHandler 时要留意这并非在 Rails 的环境中,一般 Rails 的 variable 和 helper 这里也用不到,因此尽量只在这里做必要的工作,其他的还是留给 Rails 吧。

    虽然造了一个 HttpHandler,但 Mongrel 不会自动去用它。要让 Mongrel 使用这个 Handler,可以在 Mongrel 设定档加入以下指令:

    档案七:config/mongrel_conf.yml

    代码
    1. :config_script: lib/ajax_mq_handler.rb  

     

    再在启动 Server 时使用以下指令:

     

    代码
    1. mongrel_rails start -C ./config/mongrel_conf.yml  

    最新评论共有 0 位网友发表了评论
    发表评论
    评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
    用户名: 密码:
    匿名?
    注册
    Google Adsense
    相关文章