在 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
如果我刷新本地主机网站 - 我会出现此错误:
[ERROR] [Faye::RackAdapter] undefined method `[]' for nil:NilClass
有什么想法吗?请帮忙!
最佳答案
消息['ext']为零。您可以通过
检查您的 message['ext'] 是否为零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
上面的答案是错误的,您需要清除消息['ext']['auth_token']是为了清除身份验证 token ,这样它就不会泄露给客户端。
def outgoing(message, callback)
if message['ext'] && message['ext']['auth_token']
message['ext'] = {}
end
callback.call(message)
end
关于ruby-on-rails - Faye 服务器错误 - 未定义方法 - 传入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15766586/