Hat jemand versucht Streaming HTML/Text/Inhalt von Webrick? Ich habe versucht, dem Antworttext eine IO zuzuweisen, aber Webrick wartet darauf, dass der Stream zuerst geschlossen wird.streaming html von webrick?
1
A
Antwort
2
fanden diesen Link durch einen Unfall (http://redmine.ruby-lang.org/attachments/download/161), die webrick Patch
# Copyright (C) 2008 Brian Candler, released under Ruby Licence.
#
# A collection of small monkey-patches to webrick.
require 'webrick'
module WEBrick
class HTTPRequest
# Generate HTTP/1.1 100 continue response. See
# http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/18459
def continue
if self['expect'] == '100-continue' && @config[:HTTPVersion] >= "1.1"
@socket.write "HTTP/#{@config[:HTTPVersion]} 100 continue\r\n\r\n"
@header.delete('expect')
end
end
end
class HTTPResponse
alias :orig_setup_header :setup_header
# Correct termination of streamed HTTP/1.1 responses. See
# http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/18454 and
# http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/18565
def setup_header
orig_setup_header
unless chunked? || @header['content-length']
@header['connection'] = "close"
@keep_alive = false
end
end
# Allow streaming of zipfile entry. See
# http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/18460
def send_body(socket)
if @body.respond_to?(:read) then send_body_io(socket)
elsif @body.respond_to?(:call) then send_body_proc(socket)
else send_body_string(socket)
end
end
# If the response body is a proc, then we invoke it and pass in
# an object which supports "write" and "<<" methods. This allows
# arbitary output streaming.
def send_body_proc(socket)
if @request_method == "HEAD"
# do nothing
elsif chunked?
@body.call(ChunkedWrapper.new(socket, self))
_write_data(socket, "0#{CRLF}#{CRLF}")
else
size = @header['content-length'].to_i
@body.call(socket) # TODO: StreamWrapper which supports offset, size
@sent_size = size
end
end
class ChunkedWrapper
def initialize(socket, resp)
@socket = socket
@resp = resp
end
def write(buf)
return if buf.empty?
data = ""
data << format("%x", buf.size) << CRLF
data << buf << CRLF
socket = @socket
@resp.instance_eval {
_write_data(socket, data)
@sent_size += buf.size
}
end
alias :<< :write
end
end
end
if RUBY_VERSION < "1.9"
old_verbose, $VERBOSE = $VERBOSE, nil
# Increase from default of 4K for efficiency, similar to
# http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/lib/net/protocol.rb?r1=11708&r2=12092
# In trunk the default is 64K and can be adjusted using :InputBufferSize,
# :OutputBufferSize
WEBrick::HTTPRequest::BUFSIZE = 16384
WEBrick::HTTPResponse::BUFSIZE = 16384
$VERBOSE = old_verbose
end
verwenden einfach passieren eine proc als Antworttext, wie so
res.body = proc { |w|
10.times do
w << Time.now.to_s
sleep(1)
end
}
woot enthält!
-3
Ich würde vorschlagen, WEBrick für alles wirklich zu verwenden, es ist Müll. Ich würde sagen, versuchen Sie Mongrel.
Ich weiß, das war nicht deine Frage, es ist nur ein paar freundliche Ratschläge.
Verwandte Themen
- 1. Phusion Passenger v. WEBrick
- 2. Probleme mit WEBrick
- 3. Mongrel vs WEBrick
- 4. Rubin WEBrick HTTP-Authentifizierung
- 5. Webrick-Server im Hintergrund ausführen?
- 6. Streaming mp4 mit VLC in HTML-Browser
- 7. Laufschienen in einem Produktionsmodus in Webrick-Server
- 8. Streaming von iCloud?
- 9. Herunterfahren von Spark Streaming
- 10. Audio-Streaming von OS
- 11. Wie Gurke/Selenium laufen lassen Thin Server anstelle von Webrick
- 12. Wie töte ich einen rails webrick Server?
- 13. Fork WEBrick und warten auf Start
- 14. Nicht-localhost ablehnen Versuche, auf Webrick zuzugreifen
- 15. webrick mit SSL was ist zu tun?
- 16. Spark-Streaming-Streaming aktiv Zählung
- 17. Streaming-Video von Android-Oberfläche
- 18. Streaming Media Streaming Geschwindigkeit Verwirrung
- 19. Streaming mp3 von einer URL
- 20. Von Bitmaps zu Video-Streaming
- 21. Streaming MP3s von Amazon S3
- 22. Streaming von M3U auf Android
- 23. Pseudo-Streaming von WMV-Dateien
- 24. Kombinieren von Spark Streaming + MLlib
- 25. Hadoop mapreduce streaming von HBase
- 26. Streaming-Videos von Google Cloud
- 27. Spark Streaming von Kafka Consumer
- 28. Audio-Streaming und Sprachaufzeichnung über HTML und Javascript
- 29. rtsp streaming vlc in HTML-Seite; Vollbild-Funktion
- 30. Verwendung von Twitter Streaming-API w/jQuery?
Webrick ist genial. – alex
Ja, ich denke, das ist wahr ..... – nitecoder
hehehe, es ist genauso wahr wie dein "es ist Müll" :) hängt wirklich davon ab, was deine Bedürfnisse sind. – alex