Method: Wands::WebSocketServer#accept

Defined in:
lib/wands/web_socket_server.rb

#acceptObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/wands/web_socket_server.rb', line 49

def accept
  socket = @tcp_server.accept

  request = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
  headers = read_headers_from request, socket
  unless headers["upgrade"].include? PROTOCOL
    socket.close
    raise "Not a websocket request"
  end

  response = response_to headers
  response.send_response socket

  WebSocket.new socket
rescue WEBrick::HTTPStatus::BadRequest => e
  warn "WEBRick error message: #{e.full_message}"
  warn "HTTP request string: #{request}" if request
  if socket
    socket.write "HTTP/1.1 400 Bad Request\r\n\r\n"
    socket.close
  end
end