我一直得到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更容易與其他人一起使用。謝謝!