我想知道你们是否有关于哪一个更好的见解,以及在使用其中一个时应该考虑哪些因素
答案 0 :(得分:5)
我可以从另一个(Node.js)那边说更多。我刚刚编写了一个与Rails 3集成的gem,它使用Node.js后端来监听Redis PUBSUB消息并相应地更新Rails前端。
Socket.IO + Node并不难与Rails应用程序集成(特别是如果使用jQuery),但根据您的目标浏览器基础(如IE7),在所有情况下都能正常工作,即因为使用Flash Socket作为后备的一些奇怪的情况(通常在WebSockets不起作用的地方)。
那就是说,我强烈推荐Node.js + Socket.IO。它超轻,有很多选项和灵活性,可以扩展到你想要的几乎任何东西。在我看来,Rails是一个出色的Web框架,用于构建需要计算量很大的前端的更大的应用程序。我不会选择将它用于小型事件驱动的应用程序,因为它仅为框架使用了如此多的内存。我喜欢Ruby / Rails,但是当需要快速和干净的事件处理/消息处理时,Node有我的投票。
如果您需要更具体的示例,我的项目Kthxbye(Resque-esque clone)与Redis进行通信,而Redis又由Node.JS监听,而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)
(对于节点项目完全没有文档的道歉。)
答案 1 :(得分:3)
我一直在玩抽筋和导轨3。尝试使用WebSockets构建具有动态更新的视图,以在客户端和服务器之间来回传递数据。它与Chrome完美配合,但Safari 5和FF实现了更新版本的websocket协议,而Cramp则没有,所以我无法在那里工作。
我同意在整个堆栈中使用Ruby很不错,但我认为Cramp现在在某些方面略微落后于曲线。
我决定咬紧牙关并使用node.js(和SocketIO包)来获取我的东西。
祝你好运!答案 2 :(得分:2)
我现在正在使用Rails(3)和Cramp编写一个有点不平凡的Web应用程序。我对Node.js没有任何经验,我只是开始使用Cramp,但看起来很有希望。在我看来,能够使用Ruby是一个很大的优势! (我从Tornado(Python)开始,无法忍受这种语言。抱歉Python粉丝!)
缺点是我在Cramp上找到了非常非常的第三方资料。我想,考虑到它有多新,这并不奇怪,但你或多或少依靠自己。如果你需要手持,你可能不应该使用Cramp。
答案 3 :(得分:1)
查看抽筋的不同回购。 WebSockets是移动目标,生活在边缘并不容易。 github.com/maccman/cramp fork使用rescent websockets实现,而原始的cramp不是最新的和重构。另请参阅eventmachine-websockets。无论如何 - 预先在服务器端使用thin + eventmachine。对于抽筋,你应该在生产模式下瘦身,抽筋不是那么好。
答案 4 :(得分:0)
你为什么要把自己局限于红宝石上的Cramp?
您还可以将Rails用于websocket-rails的实时应用。
你也可以使用Plezi或Volt这样的实时框架...在我看来,Volt和Plezi都比Cramp工作得更好(但我有偏见,因为我写了Plezi框架)。
这是一个带有Plezi的简单echo websocket服务器:
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