2011-09-12 28 views
2

我一直在與Cramp玩弄一些實時推送應用程序中的信息。它的所有工作都很好,但是當我推送到heroku時,我似乎遇到了與港口有關的問題。抽筋和heroku

我有一個插座抽筋從WebSocket的繼承設置

class LiveSocket < Cramp::Websocket 

我也有打電話回家抽筋作用,這基本上只是使一些僱員再培訓局在主頁

class HomeAction < Cramp::Action 

我的路徑文件I設置以下,也是一個靜態文件服務器

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上我們運行薄雪松堆棧,並且有一個配置文件,它看起來像

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

當我加載了網站本身加載罰款的頁面,但在試圖連接的WebSocket我得到它說

錯誤
servername.herokuapp.com Unexpected response code: 200 

我猜這與Heroku如何路由它的請求有關,但我知道你可以在heroku上運行一個node.js websocket服務器,所以圖中必須有一種方法來獲得這個工作。

在此先感謝您的幫助。

歡呼

斯圖爾特

回答

0

我不認爲Heroku的支持WebSockets的:(​​

+0

不錯啊,將解釋它。我一定是在那個頁面盯着100次,從來沒有注意到。我猜測如果我在客戶端設置socketIO,我可以回退到長輪詢。 –