Корчу и героку
Я играл с Cramp, чтобы в режиме реального времени передавать информацию в приложении. Все отлично работает локально, но когда я отталкиваюсь к героку, у меня возникают проблемы с портами.
У меня есть сокет, созданный в судороге, который наследуется от веб-сокета
class LiveSocket < Cramp::Websocket
и у меня также есть действие судороги, названное home, которое в основном только отдает некоторый erb для домашней страницы
class HomeAction < Cramp::Action
в моем файле маршрута я настроил следующий, а также статический файловый сервер
Rack::Builder.new do
puts "public file at #{File.join(File.dirname(__FILE__), '../public')}"
file_server = Rack::File.new(File.join(File.dirname(__FILE__), 'public'))
routes = HttpRouter.new do
add('/').to(HomeAction)
get('/LiveSocket').to(LiveSocket)
end
run Rack::Cascade.new([file_server, routes])
end
Затем на стороне клиента javascript подключается к
var ws = new WebSocket("ws://<%= request.host_with_port %>/LiveSocket");
Как я говорю локально, все это работает. Подключаемся и начинаем получать уведомления с сервера. На героку мы разбегаемся по стеку кедра и имеем профиль который выглядит
web: bundle exec thin --timeout 0 start -p $PORT
Когда я загружаю сайт, сама страница загружается нормально, но при попытке подключить веб-сокет я получаю сообщение об ошибке
servername.herokuapp.com Unexpected response code: 200
Я предполагаю, что это как-то связано с тем, как heroku направляет свои запросы, но я знаю, что вы можете запустить сервер websocket node.js на heroku, поэтому подумайте, что должен быть способ заставить это работать тоже.
Заранее благодарю за любую помощь.
ура
стюарт
1 ответ
Я не думаю, что Heroku поддерживает веб-сокеты:( http://devcenter.heroku.com/articles/http-routing