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

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

来源: 作者: 时间:2007-09-19 点击:
  
  •        
  •     begin   
  •       STOCKS.each() { |stock|   
  •         out = create_stock_text(stock)   
  •         conn.send '/topic/STOCKS.' + stock.upcase , out, {'persistent'=>'false'}   
  •       }   
  •     ensure   
  •       conn.disconnect   
  •     end   
  •   end  
  •  

    portfolio_controller.rb 中的 producer action 就是股价提供者:

    * Stomp::Connection.new 向 AMQ Server 开启一个新的 STOMP 连接。
    * create_stock_text(stock) 会找出最新的股价。这里我们随机计出数值和变动,实际上这会由报价机构提供
    * conn.send 把讯息传去 AMQ 上指定的 topic 里,所有订阅了这个 topic 的 client 也会收到这个讯息。

    完成这几个档案后,只需要启动 Rails 、 AMQ ,再把 browser 指向 http://127.0.0.1:3000/portfolio/producer 就可以看到如下的画面:

    不错,但究竟是否真的有 message 产生呢?我们可以手动连接上 AMQ 看。只要开启一个 terminal 输入以下指令:

     

    代码
    1. telnet localhost 61613  
    2. Trying ::1...   
    3. Connected to localhost.   
    4. Escape character is '^]'.  

     

    看到 connected 的字句表示己经用 Stomp 连结上了。接着输入以下指令 (^@ 是 ASCII 的 Null Character,可用 Ctrl + @ 输入):

    代码
    1.   
    2. CONNECT   
    3.   
    4. ^@   
    5. SUBSCRIBE   
    6. destination: /topic/STOCKS.*   
    7.   
    8. ^@  

     

    这会连接上 AMQ 并收取所有 /topic/STOCKS.* 的讯息。如果己经开启了 Producer ,可以收到类似下面的讯息:

     

    代码
    1. MESSAGE   
    2. destination:/topic/STOCKS.IBMW   
    3. content-type:text/plain; charset=UTF-8  
    4. content-length:83  
    5. timestamp:1183307032064  
    6. priority:0

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