`
siuying
  • 浏览: 91570 次
  • 性别: Icon_minigender_1
  • 来自: 香港
最近访客 更多访客>>
社区版块
存档分类
最新评论

Ruby on Rails + AJAX + Mongrel + JMS/MQ/MOM = 即時通訊

    博客分类:
  • Tech
阅读更多

前文研究過利用 Flash XMLSocket 作即時通訊的 Juggernaut,雖然它可以簡易的做到即時通訊,但使用非 HTTP 通訊和非開放標準這兩點很讓人在意,有滿有其他的解決方案?

ActiveMQ 的 AJAX Client

在思考的過程中,發覺我想做的不正是使用消息通訊的軟件嗎?這類軟件己經有一個很好的 Model:Messaging Oriented Middleware(MOM)。接著我跑到 Apache ActiveMQ 的網站研究有沒有可用的方案。果然,在 AMQ 的源碼中就有一個 AJAX 的 messaging client。

ActiveMQ 是開源的 JMS 專案,技術成熟而且被很多其他產品應用。它的 AJAX Client 利用連接 Server 上的 Messaging Servlet ,由Servlet 再向 AMQ 發送訊息。等等,AJAX 的 A 不就是非同步的意思嗎?怎樣用 AJAX 做到即時通訊?答案是結合 Poll 和 AJAX。Browser 首先用 AJAX 連接到 Servlet (Poll) ,如果有訊息就會即時把訊息返回,如果沒有訊息就會讓 client 等待,直到指定的時限(約30秒、比一般 browser 和 socket 的 timeout 短 )。每個 AJAX request 完結後 client 會立即重試,這樣 client 便可以得到有如 push 的效果了。比起一般 Server Push 的 Comet ,這種做法更符合一般 HTTP 的 Request - Response 模式,由於與普通 HTTP 無異,一般的 Firewall 和 Browser 也支援。

在 Rails 中的 AJAX Poll

ActiveMQ 的方法雖好,但它是一個 Servlet ,我們難道要另架一台 Java Application Server?就算不介意架這台 Server ,還要用 proxy 之類的方法解決 AJAX 不能 Cross-Domain 的問題。有沒有方法只用 Rails 就做到這種 AJAX Poll 的效果?

答案是 No and Yes。用普通的方法 Rails 不能做到以上效果。Rails 是一個單線程的環境 ,也就是說全部 Request 也由同一支 Thread 控制。在以上情境中「叫 Client 在 Request 中等待直至有信息」等於叫整個 server 停下來。幸好,Rails 單線程不等於 Server 也必須單線程。Adam的 Comet with Rails + Mongrel 中示範了怎樣用自訂 HttpHandler 讓 Rails 可以持續地跟 Client 連接。我們可以在 Client Side 呼叫 AJAX,在 Mongrel 的 HttpHandler 中把這些 Request 轉成向 MOM 的呼叫,如下圖。

Using Rails for Realtime AJAX

理論差不多了,看看怎樣實作吧!

在 Rails 和 Mongrel 作即時股票報價軟件

ActiveMQ 的 Web Demo 包括一個股票報價軟件。它分成 Consumer 和 Producer 兩部份,Consumer 是收取服價資料的 Client ,Producer 則是發報股價的 Server。我們的目標就是要在 Rails 實作這個軟件。

(more…)

分享到:
评论

相关推荐

    Ruby+Rails+社交+进阶教程5

    在本“Ruby+Rails+社交+进阶教程5”中,我们将深入探讨如何利用Ruby on Rails框架构建一个功能丰富的社交网络平台。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制...

    Ruby on Rails Tutorial

    《Ruby on Rails Tutorial》中文版(原书第2版,涵盖 Rails 4) Ruby 是一门很美的计算机语言,其设计原则就是“让编程人员快乐”。David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby...

    ruby on rails 101

    - **AJAX**:学习如何在Ruby on Rails应用中集成异步JavaScript和XML技术。 - **部署、安全与性能**:讲解如何部署Ruby on Rails应用、实施安全措施以及优化性能。 #### 结语 通过这五天的课程,读者不仅能够系统地...

    Ruby+Rails+社交+教程

    这个“Ruby+Rails+社交+教程”显然旨在引导开发者如何利用Rails的灵活性和强大功能构建一个完整的社交平台。以下是教程可能涵盖的一些核心知识点: 1. **Ruby基础知识**:首先,你需要对Ruby编程语言有基本的理解,...

    Ruby+Rails+社交+教程3

    本教程“Ruby+Rails+社交+教程3”旨在帮助开发者掌握如何利用Ruby的强大功能和Rails的优雅设计来构建一个具有用户交互性的社交平台。 首先,让我们深入了解一下Ruby。Ruby是一种面向对象的编程语言,以其简洁、易读...

    ruby on rails最新版

    Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和代码的可读性。Rails以其“约定优于配置”(Convention over Configuration)...

    Ruby on Rails安装包全集(Linux)

    Ruby on Rails是一款基于Ruby语言的开源Web开发框架,它遵循MVC(模型-视图-控制器)架构模式,简化了Web应用的开发流程。在Linux环境下安装Ruby on Rails需要一系列的依赖包和步骤,本资源包提供了所需的所有组件,...

    Ruby+on+Rails快速Web应用开发实战.pdf

    Ruby on Rails(简称RoR或Rails)是一种开源的网络应用框架,用Ruby语言编写。它被设计用来轻松地实现MVC(模型-视图-控制器)设计模式,从而使开发人员能够快速和有条理地创建数据驱动的应用程序。接下来,我将详细...

    Ruby on Rails安装指南(Ruby 1.8.6+Rails 2.0.2)

    在掌握了Ruby、Rails和Mongrel等关键组件的安装方法之后,你就能够开始探索Ruby on Rails的无限可能,开发出响应迅速、维护方便的Web应用程序。随着实践经验的积累,相信你能够更加熟练地运用Ruby on Rails来实现...

    ruby on rails 3 tutorial.pdf

    《Ruby on Rails 3 Tutorial》是一本专门为初学者设计的指南,旨在帮助读者快速掌握Ruby on Rails这一强大的Web开发框架。Ruby on Rails(简称Rails)是基于Ruby语言的一个开源框架,它采用MVC(Model-View-...

    react-blog:React + Redux + Ruby On Rails 实现的博客系统

    本项是使用 React 实现的个人博客,使用了 Redux 做数据管理,后端使用的是 Ruby On Rails 提供的接口,欢迎大家围观! 本地部署 git clone git@github.com:wewin11235/react-blog.git cd react-blog npm install ...

    Ruby On Rails系列从入门到精通实战教程 Ruby基础+Rails框架+网上商城项目实战

    Ruby On Rails系列从入门到精通实战教程 Ruby基础+Rails框架+网上商城项目实战

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    ### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...

    Ruby On Rails中文教材(PDF)

    Ruby on Rails,简称Rails,是一款基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用程序的开发。Rails由David Heinemeier Hansson于2004年创建,它提倡“约定优于配置...

    Ruby+for+Rails

    通过阅读"Ruby for Rails.pdf"和"Ruby on Rails 初体验.ppt",你可以深入了解Ruby on Rails的各个方面,包括其哲学、核心概念以及如何构建实际的Web应用程序。随着对Rails的理解加深,你将能够高效地开发出功能丰富...

    Ruby on Rails入门例子

    Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本篇将通过一个入门实例,深入探讨Rails的基本概念和核心...

    ruby on rails for dummies

    《Ruby on Rails for Dummies》是一本专门为初学者设计的Ruby on Rails教程,它旨在帮助新手快速理解并掌握这个强大的Web开发框架。Ruby on Rails(简称Rails)是基于Ruby编程语言构建的一个开源Web应用程序框架,它...

    Ruby on Rails中文指南

    Ruby on Rails,简称Rails,是一款基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,旨在提升开发效率和代码的可读性。Rails以其“约定优于配置”的设计理念,以及“DRY(Don't Repeat ...

Global site tag (gtag.js) - Google Analytics