Faye允许您监控各种事件,例如handshake或subscribe.这些回调块仅提供client_id值而不是客户端本身.例如:
server = Faye::RackAdapter.new(mount: '/faye', timeout: 45)
server.bind(:handshake) do |client_id|
puts "Received handshake from #{client_id}"
end
Run Code Online (Sandbox Code Playgroud)
如何才能访问客户端client_id?或者如何在握手中访问更多信息,例如请求标头中提供的cookie(如果该信息甚至可用)?
我认为我最初的问题是基于对Faye在两个方面如何运作缺乏了解.我没有删除我的问题,而是为其他遇到类似问题的人回答这个问题.(如果我的答案有任何错误,请评论或编辑!)
首先,由于关于Bayeux协议实施Faye的方式,在任何时候都不能访问连接的客户端.所有通信都通过频道广播进行,这意味着收听频道的所有连接都将收到正在发送的消息.
为了在我原始问题的基础上实现身份验证,我需要传递所需的任何身份验证值(无论是cookie值,身份验证令牌等)作为message['ext']值的一部分(根据扩展页面上的示例).然后,在服务器端,我需要监听/meta/handshake通道上的消息,在message['error']值的情况下设置为某个值.
| 归档时间: |
|
| 查看次数: |
1106 次 |
| 最近记录: |