Hello à tous,

Je suis en train de créer un site communautaire actuellement et j'en suis à 
la partie critique et malheureusement je rencontre un sérieux problème.

Dans mon app j'ai crée un controller que j'appelle LiveStream dont le role 
est d'écouter le serveur redis et de broadcaster les events.

Le premier événement qui est suivi est la création de profiles; donc dans 
mon code j'ai 
$redis.publish('profile.create', @profile.to_json)

dans mon controller liveStream j'ai cette action:

def events
  response.headers["Content-Type"] = "text/event-stream"
  redis = Redis.new
  redis.psubscribe('messages.*') do |on|
    on.pmessage do |pattern, event, data|
      response.stream.write("event: #{event}\n")
      response.stream.write("data: #{data}\n\n")
    end
  end
rescue IOError
  logger.info "Stream closed"
ensure
  response.stream.close
  redis.quit
end

j'ai un fichier coffeeScript qui pointe dessus:

source = new EventSource('/en/livestream/events')
source.addEventListener 'message', (e) ->
    alert e.data

Rien de bien sorcier, mais malheureusement ça ne marche pas. l'alert ne 
s'affiche jamais alors que redis le controller reçoit bien le message 
renvoyé par redis.

J'ai donc fait un essai avec un code tout bête:
  

def events
  response.headers["Content-Type"] = "text/event-stream"
  3.times do |n|
    response.stream.write "data: #{n}...\n\n"
    sleep 2
  end
rescue IOError
  logger.info "Stream closed"
ensure
  response.stream.close
end




et là tout marche bien. 

A votre avis à quel moment ça foire? sachant que quand je fais un 
logger.info dans le bloc  on.pmessage je vois bien l'objet data envoyé

j'ai suivi ce railscast: 
http://railscasts.com/episodes/401-actioncontroller-live et mis à jour le 
gemfile et les config pour faire tourner le sample sur rails 4.1.4 et le 
résultat est le même: les messages envoyés via le chat ne sont pas diffusés 
ni à l'envoyeur ni aux autres clients et la vue n'est même pas mise à jour 
avec le dernier message posté.

mon environnement: Ruby 2.1, rails 4.1.4, serveur Puma, PosgreSQL

Merci pour votre aide!

-- 
-- 
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]
--- 
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes 
Railsfrance.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, 
envoyez un e-mail à l'adresse [email protected].
Pour plus d'options, visitez le site https://groups.google.com/d/optout .

Répondre à