2013-04-02 28 views
2

在faye.ru我有這樣的代碼跟faye_token:王菲服務器錯誤 - 未定義的方法 - 進入

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'] = 'Invalid authentication token.' 
     end 
    end 
    callback.call(message) 
    end 
end 

faye_server = Faye::RackAdapter.new(:mount => '/faye', :timeout => 45) 
faye_server.add_extension(ServerAuth.new) 
run faye_server 

如果我運行這段代碼在終端:

rackup faye_alt.ru -E production -s thin 

如果我刷新本地主機web-seite - 我成爲這個錯誤:

[ERROR] [Faye::RackAdapter] undefined method `[]' for nil:NilClass 

任何想法?請幫忙!

回答

0

這裏消息[「分機」]爲零,可能是因爲你沒有從瀏覽器端部通過轉身份驗證令牌當您訂閱或平王菲服務器。

你可能要考慮

http://faye.jcoglan.com/browser/extensions.html

你必須要類似這樣的東西..

outgoing: function(message, callback) { 
    message.ext = message.ext || {}; 
    message.ext.token = your_token; 
    callback(message); 
} 
2

消息[ '分機']是零。您可以檢查您的留言[「分機」]是零通過

def incoming(message, callback) 
    if message['channel'] !~ %r{^/meta/} 
    if message['ext'].nil? || message['ext']['auth_token'] != FAYE_TOKEN 
     message['error'] = 'Invalid authentication token' 
    end 
    end 
callback.call(message) 
end 
上面的回答

是錯的,你需要清除的消息[「分機」] [「AUTH_TOKEN」]是清除了身份驗證令牌等等它不會泄露給客戶。

def outgoing(message, callback) 
    if message['ext'] && message['ext']['auth_token'] 
    message['ext'] = {} 
    end 
callback.call(message) 
end