Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 如何让服务器端faye客户端在rails应用程序中运行?_Ruby On Rails_Ruby_Ruby On Rails 4_Websocket_Faye - Fatal编程技术网

Ruby on rails 如何让服务器端faye客户端在rails应用程序中运行?

Ruby on rails 如何让服务器端faye客户端在rails应用程序中运行?,ruby-on-rails,ruby,ruby-on-rails-4,websocket,faye,Ruby On Rails,Ruby,Ruby On Rails 4,Websocket,Faye,所以我正试图用rails和faye构建一个聊天应用程序。并且希望在rails应用程序中运行服务器端faye客户端,以便处理用户客户端退出浏览器时的断开连接事件。这样我就可以在rails应用程序中调用控制器操作,从数据库中删除一些数据。我可以用faye rack应用程序检测用户id,但需要一种方法将数据进一步发送到rails 所以,如果你知道如何做到这一点,请提供帮助,或者对我如何做到这一点有任何其他建议。我考虑过的第二个选择是直接从faye发送post请求,但是我需要一些方法来进行csrf保护。

所以我正试图用rails和faye构建一个聊天应用程序。并且希望在rails应用程序中运行服务器端faye客户端,以便处理用户客户端退出浏览器时的断开连接事件。这样我就可以在rails应用程序中调用控制器操作,从数据库中删除一些数据。我可以用faye rack应用程序检测用户id,但需要一种方法将数据进一步发送到rails


所以,如果你知道如何做到这一点,请提供帮助,或者对我如何做到这一点有任何其他建议。我考虑过的第二个选择是直接从faye发送post请求,但是我需要一些方法来进行csrf保护。但我更喜欢可以订阅faye频道的服务器端客户端。

我现在通过使用“faye rails”gem解决了这一问题,并将其包含在我的application.rb文件中:

config.middleware.delete Rack::Lock
config.middleware.use FayeRails::Middleware, mount: '/faye', :timeout => 25 do
    class RealTime < FayeRails::Controller 
        channel '**' do
            monitor :unsubscribe do
                if channel != '/messages' && channel != '/disconnect'
                    user = channel[6..-1]
                    @members = Members.where("username = '#{user}'")
                    data = {:channels => @members, :user => user}
                    RealTime.publish('/disconnect', data)

                    @members.destroy_all
                end
            end
        end
    end
    add_extension(RealTime.new)    
end
config.middleware.delete Rack::Lock
config.middleware.use FayeRails::middleware,mount:'/faye',:timeout=>25 do
类RealTime@members,:user=>user}
实时发布('/disconnect',数据)
@成员们,摧毁你们所有人
结束
结束
结束
结束
添加扩展名(RealTime.new)
结束

我还为每个用户提供了一个自己的频道,用于获取用户名和从数据库中删除数据。

您可以在Rails内部安装rack应用程序,我该怎么做?我一直在看“faye rails”宝石。