实时的ruby应用程序:CRAMP vs NODE.JS

我想知道你们中的任何一位是否对哪一个更好,以及在使用这些因素时应该考虑哪些因素有所了解

我可以从另一个(Node.js)方面讲更多。 我刚刚写了一个与Rails 3集成的gem,它使用Node.js后端来监听Redis PUBSUB消息,并相应地更新Rails前端。

Socket.IO + Node并不难与Rails应用程序(尤其是使用jQuery)集成,但是根据您的目标浏览器(如IE7),在任何情况下都可能很棘手,奇怪的情况下,当使用闪存套接字作为后备(通常在WebSockets不工作)。

也就是说,我强烈推荐Node.js + Socket.IO。 这是超轻量级的,有很多select和灵活性,可以扩展到几乎任何你想要的东西。 在我看来,Rails是一个梦幻般的Web框架,用于构build需要计算量大的前端的更大的应用程序。 我不会select将它用于小型事件驱动的应用程序,因为它仅仅为框架使用了太多的内存。 我喜欢Ruby / Rails,但是当需要快速而干净的事件处理/消息处理时,Node有我的投票。

如果您需要更具体的示例,我的项目Kthxbye(一个Resque-esque克隆)与Redis进行通信,然后由Node.JS进行监听,然后可以更新Web应用程序。

插件 : http : //github.com/plukevdh/kthxbye (见: http : //github.com/plukevdh/kthxbye/blob/master/lib/generators/kthxbye/templates/kthxbye.js )

节点后端 : http : //github.com/plukevdh/kthxbye-node (见: http : //github.com/plukevdh/kthxbye-node/blob/master/poll.js )

(对节点项目完全缺乏文档抱歉。)

我一会儿抽筋和铁轨。 试图用dynamic更新来构build一个视图,使用WebSocket在客户端和服务器之间来回传递数据。 它与Chrome完美协作,但是Safari 5和FF实现了更新版本的websocket协议,而Cramp并没有这么做,所以我不能在那里工作。

我同意在整个堆栈中使用Ruby是很好的,但我认为现在的Cramp在某些方面稍微落后于曲线。

我决定咬紧牙关,使用node.js(和SocketIO软件包)来做我的东西。

祝你好运!

我正在写一个使用Rails(3)和Cramp在一起的有点不平凡的Web应用程序。 我没有任何Node.js的经验,我只是刚开始使用Cramp,但它看起来很有希望。 在我看来,能够使用Ruby是一大利好! (我从Tornado(Python)开始,不能忍受这种语言。

缺点是我已经find非常非常less的Cramp第三方材料。 我想这并不奇怪,考虑到它有多新,但是你自己或多或less。 如果你需要你的手,你可能不应该使用抽筋。

查看不同的抽筋回购。 WebSockets正在移动目标,生活在边缘并不那么容易。 github.com/maccman/cramp fork与rescent websockets实现一起工作,而原始的cramp并不是最新的,并且正在进行重构。 还要看看eventmachine-websockets。 无论如何 – 要预先在服务器上使用thin + eventmachine。 随着抽筋,你应该在生产模式下瘦,抽筋是不是很好呢。

你为什么把自己限制在ruby方的Cramp?

您也可以使用Rails来实现带有websocket-rails的实时应用程序。

你也可以使用像Plezi或Volt这样的实时框架…在我看来,Volt和Plezi都比Cramp工作得更好(但是我有点偏见,因为我写了Plezi框架)。

这是一个简单的回声websocket与Plezi服务器:

require 'plezi' class EchoCtrl def index redirect_to 'http://www.websocket.org/echo.html' end def on_message data # to broadcast the data add: # broadcast :_send_message, data _send_message data end def _send_message data response << data end end listen # you can add, a socket.io route for JSON with socket.io route '/socket.io', EchoCtrl route '/', EchoCtrl # exit the irb console to finish the setup and start the Plezi server exit