抽筋和heroku

时间:2011-09-12 20:50:30

标签: ruby-on-rails heroku websocket cramp

我一直在玩Cramp,在应用程序中实时推送信息。它在本地工作得很好但是当我推送到heroku时,我似乎遇到了端口问题。

我在抽筋中设置了一个套接字,它继承自websocket

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");

正如我在当地说的那样一切正常。我们连接并开始从服务器接收通知。在heroku上,我们在Cedar堆栈上运行很薄,并且有一个看起来像

的配置文件
web: bundle exec thin  --timeout 0 start -p $PORT

当我加载网站时,页面本身加载正常,但在尝试连接websocket时出现错误,说明

servername.herokuapp.com Unexpected response code: 200

我猜这与heroku如何路由它的请求有关,但我知道你可以在heroku上运行一个node.js websocket服务器,所以我必须有办法让它工作。

提前感谢您的帮助。

欢呼声

stuart

1 个答案:

答案 0 :(得分:0)