2

我正在尝试构建一个简单的基于 faye 实时通知系统,这样我就可以在某些操作上执行某个 javascript。这个想法相对简单,尽管我在实现它时遇到了问题,但在阅读了 faye 的文档后不知道该怎么做。

目前的想法是

  • 每个登录用户有一个唯一的 faye 频道,因此您可以将操作(弹出、设置文本)推送给特定用户
  • 我的应用程序布局中的一个 div,我可以向其中写入文本
  • 我的应用程序中的一个 div 包含弹出窗口的布局

现在我已经看到了有关 faye 的 railscast 教程,但 ryan 使用控制器/动作方法创建。我不想在数据库中插入东西,只需从任何地方调用 JS 函数(我认为构建应用程序助手是个好主意),我只想做一些类似“执行 javascript 'set_text'”的事情并执行javascript 'show_popup'

用 Faye 构建此类功能的最佳方法是什么,基本上我只需要

  • 在某个 Faye 频道上执行 javascript 函数

完成弹出和文本消息。对此有点迷失,任何人都可以指出我正确的方向,或者可能已经构建了这样的功能?提前谢谢!

4

1 回答 1

4

在服务器端,您可以这样做(这需要 eventmachine):

client = Faye::Client.new('http://localhost:9292/faye')
client.publish('/notifications/1', 'alert(1);')

或通过 HTTP:

message = {:channel => '/notifications/1', :data => 'alert(1);'}
uri = URI.parse("http://localhost:9292/faye")
Net::HTTP.post_form(uri, :message => message.to_json)

然后在客户端,您可以对数据执行任何操作。

var client = new Faye.Client('http://localhost:9292/faye');
client.subscribe('/notifications/1', function(data) {
  eval(data);
});

只需替换alert(1);为您要执行的任何 JS。

于 2011-11-24T10:48:04.980 回答