我一直在尝试使用Cramp来实时推送应用程序中的信息。这一切都在本地运行得很好,但当我推送到heroku时,我似乎遇到了端口问题。
我在cramp中设置了一个套接字,它继承了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堆栈上运行thin,并且有一个配置文件,看起来像
web: bundle exec thin --timeout 0 start -p $PORT当我加载站点时,页面本身加载正常,但在尝试连接websocket时,我得到一个错误,它说
servername.herokuapp.com Unexpected response code: 200我猜这与heroku路由请求的方式有关,但我知道你可以在heroku上运行node.js websocket服务器,所以我想一定有办法让它工作。
提前感谢您的帮助。
干杯
斯图尔特
发布于 2011-09-14 00:52:32
我不认为Heroku支持websockets :( http://devcenter.heroku.com/articles/http-routing#the_herokuappcom_http_stack
https://stackoverflow.com/questions/7393884
复制相似问题