2015-12-29 21 views
1

我一直得到503錯誤一客戶端通過菲發送消息30秒後。在30秒後,客戶端接收到消息並將其添加到聊天中,但錯誤仍然發生,套接字將最終關閉。我怎樣才能修改我現有的代碼來保持websocket的活着?我怎樣才能擺脫發送郵件時heroku拋出的30秒延遲?Faye的消息在Heroku

消息/ add.js.erb

<% broadcast @path do %> 
    var $chat = $("#chat<%= @conversation.id %>"); 
    $chat.append("<%= j render(@message) %>"); 
    //Set the scroll bar to the bottom of the chat box 
    var messageBox = document.getElementById('chat<%= @conversation.id %>'); 
    messageBox.scrollTop = messageBox.scrollHeight; 
<% end %> 
$("#convoId<%[email protected]%>")[0].reset(); 

application_helper.rb

def broadcast(channel, &block) 
    message = {:channel => channel, :data => capture(&block), :ext => {:auth_token => FAYE_TOKEN}} 
    uri = URI.parse(FAYE_END_PT) 
    Net::HTTP.post_form(uri, :message => message.to_json) 
end 

application.rb中

config.middleware.delete Rack::Lock 
config.middleware.use FayeRails::Middleware, mount: '/faye', :timeout => 25 

faye.ru

require 'faye' 
require File.expand_path('../faye_token.rb', __FILE__) 

class ServerAuth 
    def incoming(message, callback) 
    if message['channel'] !~ %r{^/meta/} 
     if message['ext']['auth_token'] != FAYE_TOKEN 
     message['error'] = 'Invalid authentication token' 
     end 
    end 
    callback.call(message) 
    end 
end 
Faye::WebSocket.load_adapter('thin') 
faye_server = Faye::RackAdapter.new(:mount => '/faye', :timeout => 45) 
faye_server.add_extension(ServerAuth.new) 
run faye_server 

Procfile

web: bundle exec rails server -p $PORT 
worker: bundle exec foreman start -f Procfile.workers 

Procile.workers

faye_worker: rackup middlewares/faye.ru -s thin -E production 

503錯誤

/messages/add Failed to load resource: the server responded with a status of 503 (Service Unavailable) 

我試着與沒有運氣網絡賽道在添加一個工人的Heroku。運行heroku local時,一切工作正常我的本地主機上。在本地主機的樣子

forego | starting web.1 on port 5000 
forego | starting worker.1 on port 5100 
worker.1 | 20:33:18 faye_worker.1 | started with pid 16534 

那裏,因爲即使與Web測功機和工人在Heroku

=== web (1X): bundle exec rails server -p $PORT 
web.1: up 2015/12/28 20:08:02 (~ 1h ago) 

=== worker (1X): bundle exec foreman start -f Procfile.workers 
worker.1: up 2015/12/28 21:18:39 (~ 40s ago) 

很多這樣的代碼是從各種教程採取所以希望如果我們能夠解決這個問題的過程問題會讓使用Heroy的Heroku更容易與其他人一起使用。謝謝!

回答