Мне было интересно, есть ли у кого-нибудь из вас соображения относительно того, какой из них лучше, и какие факторы следует принимать во внимание при использовании одного из этих
Рубиновые приложения реального времени: CRAMP vs NODE.JS
Ответ 1
Я могу говорить больше с другой стороны (Node.js). Я просто написал жемчужину, которая интегрируется с Rails 3, которая использует Node.js-back-end для прослушивания сообщений Redis PUBSUB и соответственно обновляет интерфейс Rails.
Socket.IO + Node не сложно интегрировать с Rails-приложением (особенно, если вы работаете с jQuery), но в зависимости от вашей целевой базы браузера (например, IE7), может быть сложно получить право работать во всех случаях, а именно из-за некоторых странных случаев использования Flash Socket в качестве резервной копии (обычно, когда WebSockets не работают).
Тем не менее, я настоятельно рекомендую Node.js + Socket.IO. Это суперлегкий вес с множеством опций и гибкостью, позволяющими делать практически все, что вам может понадобиться. На мой взгляд, Rails - это фантастическая веб-инфраструктура для создания больших приложений, требующих интенсивного вычислительного интерфейса. Я бы не стал использовать его для небольших приложений, управляемых событиями, потому что он использует столько памяти для одной рамки. Я люблю Ruby/Rails, но когда дело доходит до необходимости чего-то быстрого и чистого обработки событий/обработки сообщений, Node имеет мой голос.
Если вам нужны более конкретные примеры, мой проект Kспасибоbye (клон Resque-esque) связывается с Redis, который, в свою очередь, прослушивается Node.JS, который, в свою очередь, может обновлять веб-приложение.
Плагин: http://github.com/plukevdh/kthxbye (см. http://github.com/plukevdh/kthxbye/blob/master/lib/generators/kthxbye/templates/kthxbye.js)
Node Бэкэнд: http://github.com/plukevdh/kthxbye-node (см.: http://github.com/plukevdh/kthxbye-node/blob/master/poll.js)
(Извиняется за полное отсутствие документации по проекту Node.)
Ответ 2
Я играл с судорогой и рельсами 3 некоторое время назад. Была попытка создать представление с динамическими обновлениями с помощью WebSockets для передачи данных между клиентами и сервером. Он отлично работал с Chrome, но Safari 5 и FF реализуют более новую версию протокола websocket, и Cramp не делает так, что я не мог заставить его работать там.
Я согласен, что использование Ruby для всего стека хорош, но я понимаю, что Cramp сейчас немного отстает от кривой в некоторых аспектах.
Я решил укусить пулю и использовать node.js(и пакет SocketIO) для своих вещей.
Удачи!
Ответ 3
Я пишу несколько нетривиальное веб-приложение, использующее Rails (3) и Cramp вместе в данный момент. У меня нет опыта работы с Node.js, и я только начал использовать Cramp как есть, но выглядит многообещающим. И, на мой взгляд, возможность использования Ruby - большой плюс! (Я начал с Tornado (Python) и не мог нести язык. Извините поклонников Python!)
Недостатком является то, что я нашел очень, очень мало материалов третьих сторон на Cramp. Я думаю, это не удивительно, учитывая, насколько это новое, но вы более или менее сами по себе. Если вам нужна ваша рука, вы, вероятно, не должны использовать Cramp.
Ответ 4
Проверьте различные репозиции судороги. WebSockets перемещают цель, и жить на краю не так просто. Вилка github.com/maccman/cramp работает с реализацией rescent websockets, в то время как оригинальная cramp не обновляется и не рефинансируется. Также взгляните на eventmachine-websockets. Во всяком случае, вы можете использовать тонкую + eventmachine на сервере. С судорогой вы должны работать тонко в режиме производства, судорога еще не очень хорошая.
Ответ 5
Почему вы ограничиваете себя Cramp на рубиновой стороне?
Вы можете использовать Rails также для приложений реального времени с websocket-rails.
Вы также можете использовать системы реального времени, такие как Plezi или Volt... как Вольт, так и Плези работают лучше, чем Cramp, по моему мнению (но я предвзятый, так как я написал структуру Plezi).
Вот простой сервер веб-сервера echo с 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