Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails faye实时通知系统_Ruby On Rails_Notifications_Faye - Fatal编程技术网

Ruby on rails Rails faye实时通知系统

Ruby on rails Rails faye实时通知系统,ruby-on-rails,notifications,faye,Ruby On Rails,Notifications,Faye,我试图建立一个简单的基于faye实时的通知系统,这样我就可以在特定的动作上执行特定的javascript。这个想法相对简单,尽管我在实现它时遇到了问题,但在阅读了faye的文档后,我不确定wich road是否会采取这种做法 当前的想法是 每个登录用户都有一个唯一的faye频道,因此您只能将操作(弹出窗口、设置文本)推送到某个用户 我的应用程序布局中的一个div,我可以向其中写入文本 我的应用程序中的一个div保存弹出窗口的布局 现在我已经看过了关于faye的railscast教程,但是ry

我试图建立一个简单的基于faye实时的通知系统,这样我就可以在特定的动作上执行特定的javascript。这个想法相对简单,尽管我在实现它时遇到了问题,但在阅读了faye的文档后,我不确定wich road是否会采取这种做法

当前的想法是

  • 每个登录用户都有一个唯一的faye频道,因此您只能将操作(弹出窗口、设置文本)推送到某个用户
  • 我的应用程序布局中的一个div,我可以向其中写入文本
  • 我的应用程序中的一个div保存弹出窗口的布局
现在我已经看过了关于faye的railscast教程,但是ryan使用的是控制器/动作方法create。我不想在数据库中插入东西,只要从任何地方调用JS函数(我认为构建应用程序助手是个好主意),我只想执行类似“执行javascript‘set_text’”和“执行javascript‘show_popup’之类的操作

用Faye构建这样的功能的最佳方式是什么,基本上我只需要

  • 在特定Faye通道上执行javascript函数
以完成弹出窗口和文本消息。
有点迷失在这个问题上,任何人都可以为我指出正确的方向,或者可能已经构建了这样的功能?提前谢谢

在服务器端,您只需执行以下操作(这需要eventmachine):

或通过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);
});

只需更换
警报(1)使用任何你想执行的JS。

为什么你不想使用控制器?我想有一个灵活的解决方案,我可以从任何控制器调用,我上面的文字对此不清楚,抱歉。也许应用程序助手是最好的选择,但仍然不是舒尔如何开始上述实施:(Thx我在文档中发现Faye的数量少了一点,与Juggernaut相比,我因此搬到了Juggernaut(和工作示例应用程序)我仍然非常需要Rails Instant Messenger 1-1,也许你知道一个示例应用,或者你自己实现了它?使用Faye很容易实现。你可以让每个用户订阅他们自己的频道,并创建一个服务器端扩展来处理身份验证。我选择使用Faye而不是Juggernaut的原因是因为JG不允许客户端推送数据。你必须对服务器进行AJAX调用,然后服务器推送。我不能使用AJAX,因为我正在构建一个可嵌入的小部件,AJAX不能跨域工作,所以我使用了Faye。非常有趣的感谢,似乎我必须再次在Faye中挖掘更多。纯粹出于兴趣,你在用Faye构建什么?Thx
var client = new Faye.Client('http://localhost:9292/faye');
client.subscribe('/notifications/1', function(data) {
  eval(data);
});