Juggernaut chat

Hola lista, me pasa una cosa rara, he añadido en mi vista las librerías
y helper tal como indican en la documentación, cuando arranco el push
server y abro mi controlador no me renderiza la vista, si no que me
saca lo que es el código fuente y lo pinta en el navegador. No es muy
normal pero no doy con la solución, a ver si alguien puede echarme una
mano. Gracias

En mi vista tengo:

<%= stylesheet_link_tag "cjue", :media => "all" %> <%= javascript_include_tag 'prototype', :juggernaut %> <%= juggernaut(:channels => ['chat', 'chat2', 'chat3'], :client_id=>last_user()) %>

Y en mi controlador “chat”:
def index
#creates a new OnlineUser record, this is used to store who are
the users that are online now
@user = OnlineUser.new
@user.username = @current_user.nombre
@user.session_id = session.session_id
@user.online = true
@user.last_seen = Time.now

#if we can save, it means that there is no other user with the same

nick online, so this user can join the chat
if @user.save
#let’s save the username in the session for future reference
session[:username] = @user.username
#if there are online users, fill the users box for the new user
know who is online
@users = OnlineUser.find(:all, :conditions => [“online = true
and id != ?”, @user.id])
if @users.size >0
data = render_to_string(:update) do |page|
@users.each {|u|
page.insert_html :bottom, :users_list, %Q{#{u.username}}
}
end
#send the javascript only to the new user

#Juggernaut.send_to_client_on_channel(data,@user.session_id,‘chat’)
Juggernaut.send_to_client(data,@user.id)
end

    #create a javascript call to add the new user to the end of the

online users list
data = render_to_string(:update) do |page|
page.insert_html :bottom, :users_list, %Q{#{@user.username}}
page.insert_html :bottom, :text_chat, “Usuario
#{@user.username} acaba de entrar al chat


end
#add the new user to the chat channel

    #send the javascript to all users in the chat channel

    Juggernaut.send_to_channel(data, 'chat')

 else
    logger.info "Ya esta en uso este nick"
 end

end

Miguel Angel Calleja Lázaro
escribió:> “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>


@user.last_seen = Time.now
if @users.size >0
end


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es

Analizando línea a línea mi método index he ido comentando y
descomentando a ver en qué punto falla, he comprobado que estas líneas
son las responsables, si las quito me renderiza la vista, pero si lo
tengo puesto me pinta el código fuente…, es que yo creo que está bien,
aparte que tiene que hacer éso.

data = render_to_string(:update) do |page|
page.insert_html :bottom, :users_list, %Q{

  • #{@user.username}
  • }
    page.insert_html :bottom, :text_chat, “Usuario
    #{@user.username} acaba de entrar al chat


    end

    Tengo alguna especie de problemilla, recibe el mensaje, lo procesa pero
    no lo envía al cliente en
    cuestión:Juggernaut.send_to_client(data,params[:client_id])

    En cambio si lo envío al canal si me funciona, recibe el mensaje, lo
    procesa y lo envía a los clientes, pero ésto no es lo que quiero:
    Juggernaut.send_to_channel(data,“chat”)

    Os adjunto el log de juggernaut a ver si veis algo:
    D, [2008-06-28T09:45:29.830261 #16127] DEBUG – : New client
    [213.37.63.169]
    D, [2008-06-28T09:45:29.833514 #16127] DEBUG – : Receiving data:

    D, [2008-06-28T09:45:29.833884 #16127] DEBUG – : Processing message:

    D, [2008-06-28T09:45:29.834156 #16127] DEBUG – : Sending crossdomain
    file
    D, [2008-06-28T09:45:30.837172 #16127] DEBUG – : New client
    [213.37.63.169]
    D, [2008-06-28T09:45:30.841055 #16127] DEBUG – : Receiving data:
    {“command”: “subscribe”, “session_id”:
    “BAh7CzoOcmV0dXJuX3RvMDoMdXNlcl9pZGkHOg11c2VybmFtZSIPTWFyaW8g
    %0AUGVwZToRdXN1YXJpb19jaGF0MCIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxl
    %0Acjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7ADoMY3NyZl9pZCIlYjZk
    %0AZmJkNTVjYjlkNTUyZjI0NzkxMzkxNDg4ZDA3MmE
    %3D–8b2177d6cb7bd1c3ca034dda8aa08d0042e777e1”, “client_id”: 237,
    “channels”: [“chat”, “chat2”, “chat3”]}
    D, [2008-06-28T09:45:30.841450 #16127] DEBUG – : Processing message:
    {“command”: “subscribe”, “session_id”:
    “BAh7CzoOcmV0dXJuX3RvMDoMdXNlcl9pZGkHOg11c2VybmFtZSIPTWFyaW8g
    %0AUGVwZToRdXN1YXJpb19jaGF0MCIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxl
    %0Acjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7ADoMY3NyZl9pZCIlYjZk
    %0AZmJkNTVjYjlkNTUyZjI0NzkxMzkxNDg4ZDA3MmE
    %3D–8b2177d6cb7bd1c3ca034dda8aa08d0042e777e1”, “client_id”: 237,
    “channels”: [“chat”, “chat2”, “chat3”]}
    D, [2008-06-28T09:45:30.950811 #16127] DEBUG – : New client
    [127.0.0.1]
    D, [2008-06-28T09:45:30.951268 #16127] DEBUG – : Receiving data:
    {“type”: “to_clients”, “client_ids”: [“237”], “command”: “broadcast”,
    “body”: “try {\nnew Insertion.Bottom(“users_list”, “\u003Cli id=\
    “user_236\”\u003EMiguel\u003C/li\u003E”);\n} catch (e)
    { alert(‘RJS error:\n\n’ + e.toString()); alert('new
    Insertion.Bottom(\“users_list\”, \”\\u003Cli id=\\\
    “user_236\\\”\\u003EMiguel\\u003C/li\\u003E\");’); throw
    e }"}
    D, [2008-06-28T09:45:30.951594 #16127] DEBUG – : Processing message:
    {“type”: “to_clients”, “client_ids”: [“237”], “command”: “broadcast”,
    “body”: “try {\nnew Insertion.Bottom(“users_list”, “\u003Cli id=\
    “user_236\”\u003EMiguel\u003C/li\u003E”);\n} catch (e)
    { alert(‘RJS error:\n\n’ + e.toString()); alert('new
    Insertion.Bottom(\“users_list\”, \”\\u003Cli id=\\\
    “user_236\\\”\\u003EMiguel\\u003C/li\\u003E\");’); throw
    e }"}

    Lo que he hecho ha sido, entro con un cliente, se guarda en la base de
    datos que está online, su id es el 237, a este client_id se le tiene que
    enviar la lista de usuarios online, pero no se envía. A ver si alguien
    me puede explicar por qué no me funciona
    Juggernaut.send_to_client(data,params[:client_id]). Muchas gracias