2016-05-12 7 views
2

Also versuche ich eine Chat-Anwendung mit Rails und Faye zu bauen. Und möchten, dass ein Server-Side-Faye-Client in der Rails-App ausgeführt wird, um Trennereignisse zu behandeln, bei denen ein Benutzerclient den Browser beendet. So kann ich Controller-Aktionen innerhalb meiner Rails-Anwendung aufrufen, um einige Daten aus der Datenbank zu löschen. Ich bin in der Lage, die Benutzer-ID mit meiner Faye Rack-App zu erkennen, benötige aber eine Möglichkeit, die Daten weiter an die Schienen zu senden.Wie kann ich einen Server-Side-Faye-Client innerhalb meiner Rails-App laufen lassen?

Also bitte helfen Sie, wenn Sie wissen, wie Sie das tun, oder haben Sie andere Vorschläge, wie ich dies erreichen kann. Eine zweite Option, die ich in Erwägung gezogen habe, ist das direkte Senden von Postanfragen direkt von faye, aber dann muss ich etwas über den csrf-Schutz wissen. Aber ich würde einen serverseitigen Client bevorzugen, der einen Faye-Kanal abonnieren kann.

+0

Sie können die Rack-App innerhalb von Schienen montieren –

+0

Und wie mache ich das? Ich habe mir das Juwel von Faye-Rails angeschaut. – bim

Antwort

2

ich das jetzt gelöst durch Verwendung der ‚Faye-Schienen‘ Juwel und enthalten diese in meine application.rb Datei:

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 

Ich habe auch einen eigenen Kanal für jeden Benutzer, die ich die bekommen Benutzername und lösche Daten aus der Datenbank.

Verwandte Themen