Skip to content

Commit

Permalink
doc stream helper in Spanish readme
Browse files Browse the repository at this point in the history
  • Loading branch information
gnandretta committed Aug 22, 2011
1 parent 4f37978 commit 28db748
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions README.es.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -842,6 +842,56 @@ De manera similar, también podés asignar el código de estado y encabezados:
También, al igual que +body+, tanto +status+ como +headers+ pueden utilizarse
para obtener sus valores cuando no se les pasa argumentos.

=== Streaming De Respuestas

A veces vas a querer empezar a enviar la respuesta a pesar de que todavía no
terminaste de generar su cuerpo. También es posible que, en algunos casos,
quieras seguir enviando información hasta que el cliente cierre la conexión.
Cuando esto ocurra, el +stream+ helper te va a ser de gran ayuda:

get '/' do
stream do |out|
out << "Esto va a ser legen -\n"
sleep 0.5
out << " (esperalo) \n"
sleep 1
out << "- dario!\n"
end
end

Podés implementar APIs de streaming,
{Server-Sent Events}[http://dev.w3.org/html5/eventsource/] y puede ser usado
como base para {WebSockets}[http://es.wikipedia.org/wiki/WebSockets]. También
puede ser usado para incrementar el throughput si solo una parte del contenido
depende de un recurso lento.

Hay que tener en cuenta que el comportamiento del streaming, especialmente el
número de peticiones concurrentes, depende del servidor web utilizado para
servir la aplicación. Puede que algunos servidores, como es el caso de
WEBRick, no soporten streaming directamente, así el cuerpo de la respuesta será
enviado completamente de una vez cuando el bloque pasado a +stream+ finalice su
ejecución.

Cuando se pasa +false+ como parámetro, no se va a enviar el mensaje +close+ al
objeto de stream. Queda en vos cerrarlo en el punto de ejecución que quieras.
Nuevamente, hay que tener en cuenta que este comportamiento es posible solo en
servidores que soporten eventos, como Thin o Rainbows. El resto de los
servidores van a cerrar el stream de todos modos.

set :server, :thin
conexiones = []

get '/' do
# mantenemos abierto el stream
stream(false) { |salida| conexiones << salida }
end

post '/' do
# escribimos a todos los streams abiertos
conexiones.each { |salida| salida << params[:mensaje] << "\n" }
"mensaje enviado"
end

=== Log (Registro)

En el ámbito de la petición, el helper +logger+ (registrador) expone
Expand Down

0 comments on commit 28db748

Please sign in to comment.