WebSockets и Heroku: передача данных пользователю

Я создаю веб-приложение в реальном времени, используя Ruby on Rails, и Heroku кажется лучшим вариантом для его размещения.

Я бы предпочел толкать новые данные пользователю, когда он станет доступен, вместо того, чтобы тянуть его, отправляя AJAX-запросы каждые несколько секунд.

толкатель похоже, Heroku предлагает такую работу, но она имеет некоторые ограничения, приносит дополнительные расходы и делает вас зависимыми от внешнего API.

Is есть ли другой вариант использовать WebSockets на Heroku?

5 ответов


Если вы хотите сделать websockets, вам нужно использовать другой сервер, кроме rails. И так как ваш на heroku у вас нет гибкости.

дополнительно вы можете разместить сервер узлов с поддержкой websockets на микро-экземпляре ec2. Затем в вашем приложении rails, когда вы хотите нажать -- сделать запрос на сервер узла, и он перейдет к клиентам.


Если вам нужна только одна связь, попробуйте использовать события на стороне сервера.


есть два варианта, которые вы можете использовать с Heroku помимо толкателя:

1) Как и Эрик Фоде, упомянутый выше, вы можете использовать SSE, учитывая, что вам не нужна двусторонняя связь. Существует дополнение Heroku, которое вы можете использовать для этого:https://addons.heroku.com/eshq

2) Есть еще одна менее известная библиотека Фэй который вы могли бы посмотреть. Он поддерживает оба узла.серверы js и Ruby, и он основан на Байе Протокол


Heroku теперь поддерживает WebSockets:https://devcenter.heroku.com/articles/heroku-labs-websockets


в то время как WebSockets в настоящее время не поддерживается, видимо вы можете используйте сокет.io на Heroku, настраивая его для длительного опроса.