Ruby on rails 如何知道用户何时从Faye频道断开连接?
我正在尝试使用Faye用Rails构建一个简单的聊天室,并将其托管在heroku上。到目前为止,我已经能够让Faye服务器运行,并让即时消息正常工作。我使用的关键代码行有: 页面加载时启动的Javascript文件:Ruby on rails 如何知道用户何时从Faye频道断开连接?,ruby-on-rails,ruby-on-rails-3,heroku,faye,Ruby On Rails,Ruby On Rails 3,Heroku,Faye,我正在尝试使用Faye用Rails构建一个简单的聊天室,并将其托管在heroku上。到目前为止,我已经能够让Faye服务器运行,并让即时消息正常工作。我使用的关键代码行有: 页面加载时启动的Javascript文件: $(function() { var faye = new Faye.Client(<< My Feye server on Heoku here >>); faye.subscribe("/messages/new", function(data)
$(function() {
var faye = new Faye.Client(<< My Feye server on Heoku here >>);
faye.subscribe("/messages/new", function(data) {
eval(data);
});
});
$(函数(){
var faye=新faye.Client(>);
订阅(“/messages/new”,函数(数据){
评估(数据);
});
});
create.js.erb,当用户发送消息时触发
<% broadcast "/messages/new" do %>
$("#chat").append("<%= j render(@message) %>");
<% end %>
$(“#chat”)。追加(“”);
一切正常,但现在我想在用户断开聊天连接时发出通知我应该怎么做?
我已经看过了,但不清楚应该把代码放在哪里 事件监视将进入您的rackup文件。下面是我在生产中使用的一个示例:
Faye::WebSocket.load_adapter('thin')
server = Faye::RackAdapter.new(mount: '/faye', timeout: 25)
server.bind(:disconnect) do |client_id|
puts "Client #{client_id} disconnected"
end
run server
当然,您可以在传递给
#bind
的块中执行任何您喜欢的操作。您可能希望绑定到subscribe
和unsubscribe
事件,而不是disconnect
事件。读一下报纸底部的警告语
这对我来说很有效:
server.bind(:subscribe) do |client_id|
# code to execute
# puts "Client #{client_id} connected"
end
server.bind(:unsubscribe) do |client_id|
# code to execute
# puts "Client #{client_id} disconnected"
end
我还建议使用gem-这将有助于保护您的faye应用程序。谢谢您的帮助,但这会使我的应用程序在本地和heroku上崩溃。错误只是说方法“bind”不存在:'config.ru:24:in
block in:undefined method
bind'for#(NoMethodError)'检查您正在使用的Faye gems的版本。上面的代码肯定适用于faye 0.8.2和faye websocket 0.4.5。您可以发布到给定的频道吗?我试过了,但我只是[ERROR][Faye::RackAdapter]超时::ERROR