Sha256: 6aac51d7b73d6c4247ba9efd2fc895b8d12dbe5ce7a6772b348061f346033316
Contents?: true
Size: 985 Bytes
Versions: 1
Compression:
Stored size: 985 Bytes
Contents
require 'digest/sha1' require 'base64' module EventMachine module WebSocket module Handshake04 def self.handshake(headers, _, __) # Required unless key = headers['sec-websocket-key'] raise HandshakeError, "sec-websocket-key header is required" end # Optional origin = headers['sec-websocket-origin'] protocols = headers['sec-websocket-protocol'] extensions = headers['sec-websocket-extensions'] string_to_sign = "#{key}258EAFA5-E914-47DA-95CA-C5AB0DC85B11" signature = Base64.encode64(Digest::SHA1.digest(string_to_sign)).chomp upgrade = ["HTTP/1.1 101 Switching Protocols"] upgrade << "Upgrade: websocket" upgrade << "Connection: Upgrade" upgrade << "Sec-WebSocket-Accept: #{signature}" # TODO: Support sec-websocket-protocol # TODO: sec-websocket-extensions return upgrade.join("\r\n") + "\r\n\r\n" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
em-websocket-0.4.0 | lib/em-websocket/handshake04.rb |