Hi Everyone, right now im building a rails app which needs to send xmpp (Jabber) messages from time to time. Instead of connecting to the xmpp server every time i want to send a message, i would like to establish a persistent connection when the rails instance is started and use this connection every time a message needs to be sent. What would be the recommended way to do this in Rails. My Ideas so far are to implement the xmpp code either as a plugin or using some kind of BackgrounDRb task. What would you think is the best way to do it? Thanks! Florian --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Hello Florian, I look at this the same way as handling outgoing e-mail. Queue your emails and have an outside process consume the queue. In the case of emails, I use ar_mailer, which could be used as a template for sending xmpp instead of email. It''s much easier than setting up BackgroundDRb. One question to answer is about timeliness. With email, it may be fine to have your background process consume the queue every few minutes or so. It''s nice when your email for a "forgot password" shows up in your inbox seconds after the request, but a minute or two may be alright. With instant messaging, the word "instant" kind of stands out. So waiting a minute or two for the message may not be acceptable...especially for a chat application. If you are just sending server status messages and don''t care about a slight delay, I''d go the ar_mailer way (message queue, cron job to process queue). Good Luck, Jim --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I just realized you wanted the persistant connection. The ar_mailer has the daemonize feature I believe, so this where I''d focus my thoughts on making the server connection and maintaining it with a daemonized process that checks the message queue. It might even be interesting to use drb from rails to ask the daemonized process to check the queue for a new message so that you don''t have to query for new messages every minute. Sorry about that. -Jim --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Florian wrote:> right now im building a rails app which needs to send xmpp (Jabber) > messages from time to time. Instead of connecting to the xmpp server > every time i want to send a message, i would like to establish a > persistent connection when the rails instance is started and use this > connection every time a message needs to be sent. What would be the > recommended way to do this in Rails. My Ideas so far are to implement > the xmpp code either as a plugin or using some kind of BackgrounDRb > task. What would you think is the best way to do it?One way is to use a class variable in the controller which needs it. Either create the connection in your config/environment.rb file, or add a custom init method to the controller and set it there, like: class MyController < ApplicationController def initialize *args # make sure we do the normal startup stuff super # now stuff for our specific class @@xmpp_connection = ... end : You don''t need to worry about the actual arguments expected. They may change in future versions anyway. Using *args allows for whatever they may be and giving no arguments to #super will use any args that are passed. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> One way is to use a class variable in the controller which needs it. > > Either create the connection in your config/environment.rb file, or add > a custom init method to the controller and set it there, like: > > class MyController < ApplicationController > def initialize *args > # make sure we do the normal startup stuff > super > # now stuff for our specific class > @@xmpp_connection = ... > endThank you Mark, that`s what i was looking for! Florian --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---