5

我正在尝试使用 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 的网站上查看了有关监控的信息,但不清楚我应该把该代码放在哪里。

4

2 回答 2

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

于 2012-06-18T21:32:37.010 回答
4

您可能希望绑定到subscribeandunsubscribe事件而不是disconnect事件。阅读faye 监控文档底部的警告词。

这对我来说效果很好:

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 应用程序。

于 2013-01-17T22:26:23.697 回答