> The problem seems to be that CGI.parse(request.body.read)['message'][0]
> returns nil, because request.body is empty. I'm not sure why this happens at
> all because I'm using the Faye.js client as it's served by the
> application...
> Any suggestions on how to fix this?
I too looked at the request, and saw nothing strange. I fiddled for a
while over the weekend with this. And got it working once, but then it
started failing again. I have analysed all my input to faye, and I am
not sure where this is coming from. So I decided to eliminate
variables, I decided to go back to basics and try the js console, I
don't think it can get much simpler than this.
It appears that a simple subscribe can cause the error:
var client = new Faye.Client('
http://project.dev/faye');
client.subscribe('/messages', function(message) {
alert('Got a message: ' + message.text);
});
Results in this:
09:51:41 faye.1 |
[{"channel":"/meta/handshake","version":"1.0","supportedConnectionTypes":["long-polling"],"id":"1"}]
09:51:41 faye.1 | 2012-05-07 09:51:41 [INFO] [Faye::Server]
Processing messages:
[{"channel":"/meta/handshake","version":"1.0","supportedConnectionTypes":["long-polling"],"id":"1"}]
(local: false)
09:51:41 faye.1 | 2012-05-07 09:51:41 [INFO] [Faye::Server]
Handling message:
{"channel":"/meta/handshake","version":"1.0","supportedConnectionTypes":["long-polling"],"id":"1"}
(local: false)
09:51:41 faye.1 | 2012-05-07 09:51:41 [INFO] [Faye::Server]
Returning replies:
[{"id":"1","channel":"/meta/handshake","successful":true,"version":"1.0","supportedConnectionTypes":["long-polling","cross-origin-long-polling","callback-
polling","websocket","eventsource","in-process"],"clientId":"7dk9hjhgcuj9subgp5ewtzs9t","advice":{"reconnect":"retry","interval":0,"timeout":45000}}]
09:51:41 faye.1 |
09:51:41 faye.1 | 2012-05-07 09:51:41 [ERROR]
[Faye::RackAdapter] input must be a string or IO
09:51:41 faye.1 | Backtrace:
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/yajl-ruby-1.1.0/lib/yajl.rb:36:in
`parse'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/yajl-ruby-1.1.0/lib/yajl.rb:36:in
`parse'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/faye-0.8.2/lib/faye/adapters/rack_adapter.rb:99:in
`handle_request'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/faye-0.8.2/lib/faye/adapters/rack_adapter.rb:91:in
`call'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/connection.rb:80:in
`block in pre_process'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/connection.rb:78:in
`catch'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/connection.rb:78:in
`pre_process'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/connection.rb:53:in
`process'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/faye-websocket-0.4.5/lib/faye/adapters/thin.rb:41:in
`process'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/connection.rb:38:in
`receive_data'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/faye-websocket-0.4.5/lib/faye/adapters/thin.rb:45:in
`receive_data'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0.beta.4/lib/eventmachine.rb:179:in
`run_machine'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/eventmachine-1.0.0.beta.4/lib/eventmachine.rb:179:in
`run'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/backends/base.rb:61:in
`start'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/server.rb:159:in
`start'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/handler/thin.rb:13:in
`run'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/faye-0.8.2/lib/faye/adapters/rack_adapter.rb:54:in
`listen'
09:51:41 faye.1 | ./faye.ru:23:in `block in <main>'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in
`instance_eval'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in
`initialize'
09:51:41 faye.1 | ./faye.ru:1:in `new'
09:51:41 faye.1 | ./faye.ru:1:in `<main>'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/rack/adapter/loader.rb:36:in
`eval'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/rack/adapter/loader.rb:36:in
`load'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/controllers/controller.rb:181:in
`load_rackup_config'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/controllers/controller.rb:71:in
`start'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/runner.rb:185:in
`run_command'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/lib/thin/runner.rb:151:in
`run!'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/thin-1.3.1/bin/thin:6:in
`<top (required)>'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/bin/thin:23:in `load'
09:51:41 faye.1 |
/home/matt/.rbenv/versions/1.9.3-p194/bin/thin:23:in `<main>'
09:51:41 faye.1 |
[{"channel":"/meta/subscribe","clientId":"7dk9hjhgcuj9subgp5ewtzs9t","subscription":"/messages","id":"2"},{"channel":"/meta/connect","clientId":"7dk9hjhgcuj9subgp5ewtzs9t","connectionType":"long-polling","id":"3","a
dvice":{"timeout":0}}]
09:51:41 faye.1 | 2012-05-07 09:51:41 [INFO] [Faye::Server]
Processing messages:
[{"channel":"/meta/subscribe","clientId":"7dk9hjhgcuj9subgp5ewtzs9t","subscription":"/messages","id":"2"},{"channel":"/meta/connect","clientId":"7dk9hjh
gcuj9subgp5ewtzs9t","connectionType":"long-polling","id":"3","advice":{"timeout":0}}]
(local: false)
09:51:41 faye.1 | 2012-05-07 09:51:41 [INFO] [Faye::Server]
Handling message:
{"channel":"/meta/subscribe","clientId":"7dk9hjhgcuj9subgp5ewtzs9t","subscription":"/messages","id":"2"}
(local: false)
09:51:41 faye.1 | 2012-05-07 09:51:41 [INFO] [Faye::Server]
Returning replies:
[{"id":"2","clientId":"7dk9hjhgcuj9subgp5ewtzs9t","channel":"/meta/subscribe","successful":true,"subscription":"/messages"}]
09:51:41 faye.1 | 2012-05-07 09:51:41 [INFO] [Faye::Server]
Handling message:
{"channel":"/meta/connect","clientId":"7dk9hjhgcuj9subgp5ewtzs9t","connectionType":"long-polling","id":"3","advice":{"timeout":0}}
(local: false)
09:51:41 faye.1 | 2012-05-07 09:51:41 [INFO] [Faye::Server]
Returning replies:
[{"id":"2","clientId":"7dk9hjhgcuj9subgp5ewtzs9t","channel":"/meta/subscribe","successful":true,"subscription":"/messages"},{"id":"3","clientId":"7dk9hjhg
cuj9subgp5ewtzs9t","channel":"/meta/connect","successful":true,"advice":{"reconnect":"retry","interval":0,"timeout":45000}}]
09:51:41 faye.1 |
[{"channel":"/meta/connect","clientId":"7dk9hjhgcuj9subgp5ewtzs9t","connectionType":"eventsource","id":"4"}]
09:51:41 faye.1 | 2012-05-07 09:51:41 [INFO] [Faye::Server]
Processing messages:
[{"channel":"/meta/connect","clientId":"7dk9hjhgcuj9subgp5ewtzs9t","connectionType":"eventsource","id":"4"}]
(local: false)
09:51:41 faye.1 | 2012-05-07 09:51:41 [INFO] [Faye::Server]
Handling message:
{"channel":"/meta/connect","clientId":"7dk9hjhgcuj9subgp5ewtzs9t","connectionType":"eventsource","id":"4"}
(local: false)
09:51:41 faye.1 | 2012-05-07 09:51:41 [INFO] [Faye::Server]
Returning replies:
[{"id":"4","clientId":"7dk9hjhgcuj9subgp5ewtzs9t","channel":"/meta/connect","successful":true,"advice":{"reconnect":"retry","interval":45000,"timeout":0}}
]
Thanks for looking into this!