2014-11-03 64 views
4

我正在嘗試部署正在通過Thin服務的Ruby on Rails應用程序。該應用程序使用websockets,尤其是websocket-rails庫。使用Websockets部署Thin

這適用於本地。試圖部署時,它不起作用。 websocket服務器是而不是獨立應用程序 - websocket只是主應用程序服務器的一部分。當我的javascript創建到Web服務器的連接,我看到在我production.log如下:

[2014-11-02T23:38:19.942236 #9154] INFO -- : Started GET "/websocket" for <IP ADDRESS> at 2014-11-02 23:38:19 +0000 

沒有別的關係到production.log WebSocket的請求。在我websocket_rails.log,我看到:

[32mConnectionManager^[[0m] Connection opened: #<Connection::b2b0d6b0e3faa4432b0c> 
[32mConnectionManager^[[0m] Connection closed: #<Connection::b2b0d6b0e3faa4432b0c> 

顯示該請求沒有達到WebSocket的代碼,連接被及時關閉。在瀏覽器中,我看到

WebSocket connection to 'ws:/<DOMAIN>/websocket' failed: Error during WebSocket handshake: Unexpected response code: 200 

我發現關於此錯誤的信息非常有限。有沒有簡單的方法來調試這些錯誤?檢查Chrome Inspector中的數據顯示以下請求/ websocket: enter image description here

我想我想我錯過了一個簡單的配置,但必須發現它可能是什麼。有任何想法嗎?

謝謝!

+1

您使用的是nginx嗎?也許會出現某種配置問題。這個問題可能會有所幫助,如果你是: http://stackoverflow.com/questions/15992145/nginx-1-3-13-reverse-proxy-websockets – trueinViso 2014-11-07 23:31:43

+0

我正在使用nginx,但我沒有反向代理建立。網絡套件不是獨立的,它們是基本應用程序的一部分。儘管如此,我會進一步研究我的nginx配置。謝謝。 – NolanDC 2014-11-10 22:28:51

+0

我也使用nginx作爲代理來使用websocket-rails瘦,我不得不添加一個websocket的條目。 – Samo 2015-05-07 16:15:31

回答

0

我在本地機器上運行瘦服務器來運行應用程序,並且在部署到生產環境時它不起作用。爲了運行獨立的服務器,我必須在Heroku上設置一個單獨的應用程序。也許這會對你有用?