mirror of
https://github.com/sinatra/sinatra
synced 2023-03-27 23:18:01 -04:00
doc stream helper in Spanish readme
This commit is contained in:
parent
4f37978634
commit
28db7486ef
1 changed files with 50 additions and 0 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue