Cramp and heroku

762 Views Asked by At

I have been playing around with Cramp to do some real time pushing of information in an app. Its all working great locally but when I push off to heroku I seem to be having issues with the ports.

I have a socket set up in cramp which inherits from websocket

class LiveSocket < Cramp::Websocket

and I also have a cramp action called home which basically just renders some erb for the home page

class HomeAction < Cramp::Action

in my route file I set up the following and also a static file server

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

Then on the client end the javascript connects to

var ws = new WebSocket("ws://<%= request.host_with_port %>/LiveSocket");

As I say locally it all works. We connect and start receiving notifications from the server. On heroku we run thin on the Cedar stack and have a profile which looks like

web: bundle exec thin  --timeout 0 start -p $PORT

When I load up the site the page itself loads fine but on trying to connect the websocket I get an error which says

servername.herokuapp.com Unexpected response code: 200

I am guessing this has something to do with how heroku routes its requests but I do know that you can run a node.js websocket server on heroku so figure there must be a way to get this working too.

Thanks in advance for any help.

cheers

stuart

1

There are 1 best solutions below

1
On