我正在尝试使用Faye与Rails建立一个简单的聊天室,并将其托管在heroku上。到目前为止,我能够让Faye服务器运行,并获得即时消息。我正在使用的关键代码行是:
页面加载时启动的Javascript文件:
$(function() {
var faye = new Faye.Client(<< My Feye server on Heoku here >>);
faye.subscribe("/messages/new", function(data) {
eval(data);
});
});
create.js.erb,在用户发送消息时触发
<% broadcast "/messages/new" do %>
$("#chat").append("<%= j render(@message) %>");
<% end %>
一切正常,但现在我想在用户断开聊天时通知。 我该怎么做?
我已经查看了Faye's website about monitoring,但目前尚不清楚我应该在哪里放置该代码。
答案 0 :(得分:6)
事件监控会进入您的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
的块中执行任何您喜欢的操作。
答案 1 :(得分:4)
您可能希望绑定到subscribe
和unsubscribe
事件而不是disconnect
事件。阅读faye monitoring docs底部的警告字。
这对我来说效果很好:
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
我还建议使用private pub宝石 - 这有助于保护您的王菲应用。