我正在使用 Faye websocket实现。当检测到 websocket 时,我想确保用户在打开连接之前发送了给定的标头,否则我想返回错误。我尝试使用返回错误 401,[]
但我一直注意到代码继续执行并且无论如何都会创建 websocket。我设法通过return
在它后面添加来防止它,但我不确定这是正确的方法。在客户端,我使用 ws4py 在 python 中实现它,当我返回时,我得到一个异常,表明它收到了 302 代码,而不是我期望发送的 401。
我的 ruby 代码(没有 websocket 事件代码)如下:
App = lambda do |env|
if Faye::WebSocket.websocket?(env)
unless env['HTTP_MY_HEADER']
[401, {'Content-Type' => 'application/json'}, '{"message": "I was expecting a header here"}']
#return (??)
end
ws = Faye::WebSocket.new(env)
# Rest of websocket call handling
else
# Normal HTTP request
[200, {'Content-Type' => 'text/plain'}, ['Hello']]
end
end