Hacer un chat

Hola amigos, me gustaría hacer un chat en ruby on rails para una
aplicación, lo primero que he visto por Google son estos enlaces [1] y
[2], alguien ha hecho alguno, os agradecería si me recomendarais o
algún link informativo. Gracias

[1]

[2]
http://www.urubatan.info/2007/10/a-cool-chat-example-created-with-ruby-on-rails-and-juggernaut/

hola,

Hola amigos, me gustaría hacer un chat en ruby on rails para una
aplicación, lo primero que he visto por Google son estos enlaces [1] y
[2], alguien ha hecho alguno, os agradecería si me recomendarais o algún
link informativo. Gracias

hace poco salió este mismo tema en el foro de workingwithrails
(http://workingwithrails.com/forums/4-ask-a-rails-expert/topics/119-chatting-program)

yo recomendaba usar juggernaut (http://juggernaut.rubyforge.org/), sobre
todo porque da bastantes cosas de forma simple. Pero en el thread salía
alguna otra
opción.
saludos,

javier ramírez

Si te decides por el refresh periódico aquí [1] hay uno libre que te
puede
servir de ayuda.
Para hacerlo con refresh tienes que tener en cuenta la cantidad de
usuarios
que usaran el chat, ya que cada usuario conectado va a estar generando
consultas cada 5 segundos por ejemplo, aunque no escriban.

Campfire usa refresh periódico, así que tan malo no puede ser.

[1] http://rinstant.rubyforge.org/

2008/4/30 Listas [email protected]:

yo creo que un refresh periódico es más práctico,
un server de push te exige cambiar ligeramente la infraestructura

marze

El 30/04/2008, a las 17:06, javier ramirez
escribió:

hola,

javier ramirez
escribió:> (http://workingwithrails.com/forums/4-ask-a-rails-expert/topics/119-chatting-program)

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

Ok, sabes si juggernaut es de pago por instalar algún requerimento, push
server, etc o usar flash en el servidor? Me comentan que el chat estaría
entorno a los 30 usuarios, no más.

hola,

yo recomendaba usar juggernaut (http://juggernaut.rubyforge.org/), sobre

Ok, sabes si juggernaut es de pago por instalar algún requerimento, push
server, etc o usar flash en el servidor? Me comentan que el chat estaría
entorno a los 30 usuarios, no más.

vuelvo a recomendarte la url que te pasé, en la que tienes los
requisitos, la licencia, etc… lo siento pero no voy a explicártelo
aquí si lo tienes en el README de la página que te he pasado.

lo único que creo que no está ahí directamente (pero sí lo encontré una
vez en los archivos de la lista de correo de juggernaut) es lo de los
usuarios. Si no recuerdo mal, hasta 1000 no tenía problemas.

Buenas de nuevo,

License: MIT
Website: http://juggernaut.rubyforge.org

bueno… como dice en el texto que has pegado, es una licencia MIT. Es la
misma que usa Rails. Lo puedes usar de forma gratuita siempre que
distribuyas la licencia junto con tu código.

javier ramirez
escribió:>>


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

Hola Javier, de nuevo gracias por la recomendación, no pido que me
explique nadie nada, faltaría más. De hecho ya lo había leido antes el
enlace que me pasaste y el Readme también, te doy las gracias de nuevo,
aún así no conseguí leer nada de licencias tan
sólo encontré:
=CONTACT DETAILS

Author: Alex MacCaw
E-Mail Address: [email protected]
License: MIT
Website: http://juggernaut.rubyforge.org
Blog: http://www.eribium.org

de ahí mis dudas, por supuesto que vi los requisitos, features, install y
demás, de hecho lo he leido un par de veces, pero no pedí que me explique
nadie cómo funciona, o estoy yo muy torpe hoy o no veo información acerca de
la licencia de si es de pago o no, no creo que sea pecado preguntar
acerca de éso, pero bueno, gracias por el reporte e intentaré contactar con
Alex, es que no me gustaría encontrarme luego con sorpresas. Perdona mi
ignorancia sobre este asunto, gracias.

javier ramirez wrote:

Buenas de nuevo,

License: MIT
Website: http://juggernaut.rubyforge.org

bueno… como dice en el texto que has pegado, es una licencia MIT. Es la
misma que usa Rails. Lo puedes usar de forma gratuita siempre que
distribuyas la licencia junto con tu c�digo.

Hola Javier, esto es lo que encontre en mi lector de feeds: El dorado
http://almosteffortless.com/2008/05/05/el-dorado-092-group-chat-edition/

Espero que te sirva

Saludos.

hola,

http://shooting-star.rubyforge.org/wiki/wiki.pl?Making_A_Chat_System_Within_5_Minutes

shooting star tiene muy buena pinta, aunque de momento todavía lo veo un
poco verde… Estoy siguiendo el desarrollo de varios servidores para
comet y shooting star es de los más prometedor que he visto para Rails.
Le tengo el ojo puesto para cuando lo tengan funcionando mejor. También
hay un servidor de comet (cometd) que no está hecho en ruby pero que
tiene bindings para ruby. De todos modos, no funciona muy bien tampoco
todavía.

Para push, a día de hoy, lo mejor que he visto que integre bien con
Rails es juggernaut . Si quieres polling tienes más opciones, como la
que te recomienda Carlos. Pero esas soluciones por definición o no van a
escalar bien o van a tener un funcionamiento lento (si usas caché y
haces un polling más bien largo).

De momento estoy probando juggernaut, me funciona, para iniciar el push
server debo hacer:

juggernaut -c juggernaut.yml

pero hay alguna manera de correrlo por background así por decirlo de alguna manera, que esté corriendo cuando abra el chat.

como has dicho, es un push server. Sería algo parecido al Apache o al
Mongrel de tu aplicación, es decir, que para que tus usuarios puedan
conectar tienes que arrancarlo previamente.

Saludos,

javier ramírez

Carlos R. escribió:

Saludos.

HOla Carlos, el chat era para mí, Javier sólo me aconsejaba jej. Aparte
del juggernaut, encontré este otro también:
http://shooting-star.rubyforge.org/wiki/wiki.pl?Making_A_Chat_System_Within_5_Minutes

De momento estoy probando juggernaut, me funciona, para iniciar el push
server debo hacer:

juggernaut -c juggernaut.yml

pero hay alguna manera de correrlo por background así por decirlo de
alguna manera, que esté corriendo cuando abra el chat.

javier ramirez escribió:

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

Gracias Javier, miraré la manera de hacerlo correr.

Estoy mirando algún pequeño tutorial, en alguno veo métodos que no
existen, debe ser que está obsoleto, me he bajado creo que la última
versión de juggernaut, estoy intentando enviar los datos de diversas
formas para probar:

  1. Viendo el log parece que lo hace bien, recibe el data, lo procesa
    pero no lo envía al navegador.
    @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{

  2. #{u.username}
  3. }
    }
    end

           #send the javascript only to the new user
             Juggernaut.send_to_client(data,@user.session_id)
     end
    

    Tanto @users como @user existen.

  4. De esta otra forma, tampoco me envia el data, lo recibe, lo procesa
    pero no lo pinta.
    render :juggernaut => {:channels => [params[:send_to_channel]], :type =>
    :send_to_channels} do |page|

    page.insert_html :top, ‘chat_data’, h(params[:chat_input])+“\n”
    end

  5. Y de esta forma simple si que lo recibo todo bien.
    render :juggernaut do |page|
    page.insert_html :top, ‘chat_data’, “

  6. #{h
    params[:chat_input]}

  7. end

Pero a mi me interesa más la 1 y 2. Estoy escribiendo algo mal en esos
puntos? Gracias

Hola, tienes que comentar una linea en js/juggernaut/juggernaut.js

en la linea 36 ± tienes que comentar esta linea

  //this.hasFirebug ? console.log(msg) : alert(msg);

o bien solo darle soporte para firebug, es decir, solo si encuentra
firebug

  this.hasFirebug ? console.log(msg) : '';

saludos

2008/5/8 Miguel Angel Calleja Lázaro [email protected]:

Miguel M.
escribió:>

saludos

Cierto, ya lo he visto, muchas gracias

Miguel Angel Calleja Lázaro escribió:

versión de juggernaut, estoy intentando enviar los datos de diversas
page.insert_html :bottom, :users_list, %Q{<li
2) De esta otra forma, tampoco me envia el data, lo recibe, lo procesa
end

Ya lo he solucionado, añadiendo en la vista los canales:

<%= juggernaut(:channels => [‘one’, ‘two’, ‘three’]) %>

en vez de:
<%=juggernaut%>

Ahora si me va.

Tengo otra pregunta, tanto en explorer como en safari me salen alerts
cada vez que se conecta y cada vez que se envía el mensaje, pero
funciona, alguien sabe cómo puedo quitarlos?
El alert que sale es algo así:
try {
new Insertion.Bottom(“dasd”, “user: q mal escribo\u003Cbr/\u003E”);
scrollMessages();
} catch (e) { alert(‘RJS error:\n\n’ + e.toString()); alert(‘new
Insertion.Bottom(“dasd”, “uer: q mal
escribo\u003Cbr/\u003E”);\nscrollMessages();’); throw e } on
209.20.67.27:5001

Miguel Angel Calleja Lázaro
escribió:>

`new’


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

MMm me pasa una cosa rara, funciona si todo lo demás está comentado,
TODO, si tengo por ejemplo en la
configuración:
:logout_url: http://my_app.com/sessions/logout

:port: 5001

es cuando peta, no me deja tener descomentadas otras líneas, es algo
normal ésto?

Hola de nuevo, me ha surgido un problemilla con el logout, no me carga
juggernaut.yml al iniciar el push server.

En juggernaut.yml he puesto:

== Subscription Logout ==

 # If specified, logout_connection_url is called everytime a

specific connection from a subscribed client disconnects.
# Parameters passed are session_id, client_id and an array of
channels specific to that connection.

  :logout_connection_url: http://my_app.com/session/logout

 # Logout url is called when all connections from a subscribed

client are closed.
# Parameters passed are session_id and client_id.
#
:logout_url: http://my_app.com/sessions/logout

Reinicio el servidor para el cambio que he hecho, y a
continuación arranco el push server:
juggernaut -c juggernaut.yml

Me sale este error:
/usr/lib/ruby/1.8/yaml.rb:133:in load': syntax error on line 66, col 6: :logout_connection_url: http://my-app.com/session/logout
(ArgumentError)
from /usr/lib/ruby/1.8/yaml.rb:133:in load' from /usr/lib/ruby/gems/1.8/gems/juggernaut-0.5.4/bin/../lib/juggernaut/runner.rb:38:in initialize’
from
/usr/lib/ruby/gems/1.8/gems/juggernaut-0.5.4/bin/…/lib/juggernaut/runner.rb:11:in
new' from /usr/lib/ruby/gems/1.8/gems/juggernaut-0.5.4/bin/../lib/juggernaut/runner.rb:11:in run’
from
/usr/lib/ruby/gems/1.8/gems/juggernaut-0.5.4/bin/juggernaut:4
from /usr/bin/juggernaut:19:in `load’
from /usr/bin/juggernaut:19

Estoy mirando documentación pero no encuentro el porqué del error,
alguna sugerencia? Gracias

Es lo que tienen los ficheros de configuración YAML[1].

“In YAML block styles, structure is determined by indentation. In
general, indentation is defined as a zero or more space characters at
the start of a line.
To maintain portability, tab characters must not be used in
indentation, since different systems treat tabs differently. Note that
most modern editors may be configured so that pressing the tab key
results in the insertion of an appropriate number of spaces.”

Un saludo,

Francesc

[1] http://yaml.org/spec/1.2/#id2577368

Miguel Angel Calleja Lázaro
escribió:> Ror-es mailing list

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

Me respondo a mi mismo, parece ser que no le gustan los espacios en el
fichero de configuración y debe ir todo alineado, cosas raras…