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服務器,所以圖中必須有一種方法來獲得這個工作。
在此先感謝您的幫助。
歡呼
斯圖爾特
不錯啊,將解釋它。我一定是在那個頁面盯着100次,從來沒有注意到。我猜測如果我在客戶端設置socketIO,我可以回退到長輪詢。 –