2

我正在使用 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
4

0 回答 0