Open lennartkoopmann opened 13 years ago
Linux nb-lkoopmann 2.6.35-30-generic #56-Ubuntu SMP Mon Jul 11 20:01:08 UTC 2011 x86_64 GNU/Linux
Could you please try curl with -N option:
curl -N -v http://127.0.0.1:3000
local ~$ curl -N -v http://127.0.0.1:3000
* About to connect() to 127.0.0.1 port 3000 (#0)
* Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 3000 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
> Host: 127.0.0.1:3000
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: text/html
< Connection: keep-alive
< Server: thin 1.2.11 codename Bat-Shit Crazy
* no chunk, no close, no size. Assume close to signal end
<
Hello Worldfoo* Closing connection #0
Thanks!
The Twitter stream API for example is working and streaming for me with the same curl call:
local ~$ curl -v http://stream.twitter.com/1/statuses/sample.json -umyuser:mypass
* About to connect() to stream.twitter.com port 80 (#0)
* Trying 199.59.148.138... connected
* Connected to stream.twitter.com (199.59.148.138) port 80 (#0)
* Server auth using Basic with user '_lennart'
> GET /1/statuses/sample.json HTTP/1.1
> Authorization: [REMOVED]
> User-Agent: curl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
> Host: stream.twitter.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json
< Transfer-Encoding: chunked
< Server: Jetty(6.1.25)
<
{"in_reply_to_screen_name":null,"text":"What's for breakfast tho?","in_reply_to_user_id_str":null,
....
It's likely because Twitter API results would fill the curl buffer very quickly, so you'd see the results almost instantly.
Okay. So you think it is a problem with curl? (Just to make sure: It was still not working with the curl -N switch)
Ah I thought -N did the trick. I'll have a look later today.
Thanks!
I suspect the problem is due to the sleep
call locking up the EM reactor while the 'Hello World' render has been buffered to the output stream, but not yet flushed.
Instead of holding up the whole reactor with sleep
, try EM::add_timer
, like so:
# hello_world.ru
require "rubygems"
require 'cramp'
class HomeAction < Cramp::Action
def start
render "Hello World"
EventMachine::add_timer(5) do
render "foo"
finish
end
end
end
run HomeAction
I have this code:
I run this with
thin --timeout 0 -R hello_world.ru start
but nothing is streamed:It takes exactly the
sleep(5)
seconds to get the result returned.I have the same problem when running in a clamp skeleton application as described in the docs. (using Bundler)
Server output:
Versions:
Gems:
I am not sure where to start debugging so any help would be very appreciated! Thank you!