Class: Thin::Request::Protocol76

Inherits:
WebSocketHandler show all
Defined in:
lib/thin_extensions.rb

Instance Method Summary collapse

Methods inherited from WebSocketHandler

#initialize

Constructor Details

This class inherits a constructor from Thin::Request::WebSocketHandler

Instance Method Details

#handshakeObject



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/thin_extensions.rb', line 101

def handshake
  key1   = @request.env['HTTP_SEC_WEBSOCKET_KEY1']
  value1 = number_from_key(key1) / spaces_in_key(key1)
  
  key2   = @request.env['HTTP_SEC_WEBSOCKET_KEY2']
  value2 = number_from_key(key2) / spaces_in_key(key2)
  
  hash = Digest::MD5.digest(big_endian(value1) +
                            big_endian(value2) +
                            @request.body.read)
  
  upgrade =  "HTTP/1.1 101 Web Socket Protocol Handshake\r\n"
  upgrade << "Upgrade: WebSocket\r\n"
  upgrade << "Connection: Upgrade\r\n"
  upgrade << "Sec-WebSocket-Origin: #{@request.env['HTTP_ORIGIN']}\r\n"
  upgrade << "Sec-WebSocket-Location: #{@request.websocket_url}\r\n\r\n"
  upgrade << hash
  upgrade
end