私は本Sinatra: Up and Running p からこの例を実行しようとしています。46、しかし、それを機能させることはできません。プログラムコードは次のとおりです。
require 'sinatra'
before do
content_type :txt
end
connections = []
get '/consume' do
stream(:keep_open) do |out|
# store connection for later on
connections << out
# remove connection when closed properly
out.callback { connections.delete(out) }
# remove connection when closed due to an error
out.errback do
logger.warn 'we just lost a connection!'
connections.delete(out)
end
end
end
get '/broadcast/:message' do
connections.each do |out|
out << "#{Time.now} -> #{params[:message]}" << "\n"
end
"Sent #{params[:message]} to all clients."
end
コードをテストする手順は次のとおりです。
It’s a little tricky to demonstrate the behavior in text, but a good demonstration would
be to start the application, then open a web browser and navigate to http://localhost:
4567/consume. Next, open a terminal and use cURL to send messages to the server.
$ curl http://localhost:4567/broadcast/hello
Sent hello to all clients.
If you look back at the web browser, you should see that the content of the page has
been updated with a time stamp and the message that you sent via the terminal. The
connection remains open, and the client continues to wait for further information from
the server.
これらの指示に従うと、エラーは発生しませんが、ブラウザーに「こんにちは」というメッセージは表示されません。Webrick で Sinatra を実行しています。なぜ機能しないのですか?
ありがとう!
更新 (コンスタンチンの薄い提案)
私は今、薄く始めて、本とOPで説明されている2つのステップを実行します. Thin が実際に両方の要求を受け取ることがわかります。ただし、ブラウザに「hello」という出力が表示されません。
>rackup
>> Thin web server (v1.4.1 codename Chromeo)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:9292, CTRL+C to stop
127.0.0.1 - - [13/Aug/2012 12:48:03] "GET /consume HTTP/1.1" 200 - 0.0900
127.0.0.1 - - [13/Aug/2012 12:48:03] "GET /favicon.ico HTTP/1.1" 404 447 0.0000
127.0.0.1 - - [13/Aug/2012 12:49:02] "GET /broadcast/hello HTTP/1.1" 200 26 0.00
00
127.0.0.1 - - [13/Aug/2012 12:57:00] "GET /consume HTTP/1.1" 200 - 0.0000
おそらく間違いは私のconfigu.ru
ファイルにあります:
require './streaming.rb'
run Sinatra::Application