lib/websocket/handshake/handler/server75.rb
# frozen_string_literal: true
module WebSocket
module Handshake
module Handler
class Server75 < Server
private
def headers
{
origin: 'WebSocket-Origin',
location: 'WebSocket-Location',
protocol: 'WebSocket-Protocol'
}.freeze
end
# @see WebSocket::Handshake::Handler::Base#header_line
def header_line
'HTTP/1.1 101 Web Socket Protocol Handshake'
end
# @see WebSocket::Handshake::Handler::Base#handshake_keys
def handshake_keys
[
%w[Upgrade WebSocket],
%w[Connection Upgrade],
[headers[:origin], @handshake.headers['origin']],
[headers[:location], @handshake.uri]
] + protocol
end
def protocol
return [] unless @handshake.headers.key?(headers[:protocol].downcase)
proto = @handshake.headers[headers[:protocol].downcase]
[[headers[:protocol], @handshake.protocols.include?(proto) ? proto : nil]]
end
end
end
end
end