2012-06-01 144 views
2

我有使用Faye的多人游戏导轨3。 误差未定义的方法`close_connection_after_writing'

block in close': undefined method close_connection_after_writing”的零:NilClass(NoMethodError)

from /Users/ostap/.rvm/gems/[email protected]/gems/faye-websocket-0.4.5/lib/faye/websocket/api.rb:89:in `call' 
    from /Users/ostap/.rvm/gems/[email protected]/gems/faye-websocket-0.4.5/lib/faye/websocket/api.rb:89:in `close' 
    from /Users/ostap/.rvm/gems/[email protected]/gems/faye-websocket-0.4.5/lib/faye/websocket.rb:198:in `fail' 
    from /Users/ostap/.rvm/gems/[email protected]/gems/thin-1.3.1/lib/thin/connection.rb:155:in `unbind' 
    from /Users/ostap/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/eventmachine.rb:1417:in `event_callback' 
    from /Users/ostap/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine' 
    from /Users/ostap/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run' 
    from /Users/ostap/.rvm/gems/[email protected]/gems/thin-1.3.1/lib/thin/backends/base.rb:61:in `start' 
    from /Users/ostap/.rvm/gems/[email protected]/gems/thin-1.3.1/lib/thin/server.rb:159:in `start' 
    from /Users/ostap/.rvm/gems/[email protected]/gems/rack-1.4.1/lib/rack/handler/thin.rb:13:in `run' 
    from /Users/ostap/.rvm/gems/[email protected]/gems/rack-1.4.1/lib/rack/server.rb:265:in `start' 
    from /Users/ostap/.rvm/gems/[email protected]/gems/rack-1.4.1/lib/rack/server.rb:137:in `start' 
    from /Users/ostap/.rvm/gems/[email protected]/gems/rack-1.4.1/bin/rackup:4:in `<top (required)>' 
    from /Users/ostap/.rvm/gems/[email protected]/bin/rackup:19:in `load' 
    from /Users/ostap/.rvm/gems/[email protected]/bin/rackup:19:in `<main>' 

我Faye的服务器启动与命令

rackup faye.ru -s薄-E后生产

我该怎么处理这样的错误?有什么结果呢?我该如何处理?

回答

7

我这个页面上找到(它在俄罗斯)http://habrahabr.ru/sandbox/45416/

添加到您的faye.ru文件

王菲:: WebSocket.load_adapter( '薄')

这使我的解决办法

我希望它可以帮助你的建议

+0

是))当我知道解决方案时,我在Habr上写了那篇文章)。 Habr上的这篇文章有用吗? –

+0

是的,那是把我带到了一个愉快的一天;-) – tingel2k

+0

甜,谢谢!这工作完美! – DnfD

0

这是EventMachine错误。这个方法的接收者是一个连接对象,所以我认为这个错误意味着连接以不正确的方式被终止或者没有被创建。

1

我也遇到了这个问题,升级后王菲的感谢。

要建立在@ tingel2k的答案,你需要插入这样的:应用程序启动之前

Faye::WebSocket.load_adapter('thin') 

faye.ru,如:

run Faye::RackAdapter.new(...) 
1

不使用rackup开始王菲
相反,使用thin start -R faye.ru -e production
这是我的faye.ru文件

# encoding: utf-8 
require 'faye' 
require File.expand_path('../config/initializers/faye_token.rb', __FILE__) 

Faye::WebSocket.load_adapter('thin') 

class ServerAuth 
    def incoming(message, callback) 
    if message['channel'] !~ %r{^/meta/} 
     if message['ext']['auth_token'] != FAYE_TOKEN 
     message['error'] = 'Token de autenticacao invalido' 
     end 
    end 
    callback.call(message) 
    end 
end 

bayeux = Faye::RackAdapter.new(:mount => '/faye', :timeout => 25, :extensions => [ServerAuth.new]) 
run bayeux