module Jellyfish::WebSocket
Attributes
parser[R]
sock[R]
Public Instance Methods
switch_protocol(&block)
click to toggle source
# File lib/jellyfish/websocket.rb, line 15 def switch_protocol &block key = env['HTTP_SEC_WEBSOCKET_KEY'] accept = [Digest::SHA1.digest("#{key}#{GUID}")].pack('m0') @sock = env['rack.hijack'].call sock.binmode sock.write(<<-HTTP) HTTP/1.1 101 Switching Protocols\r Upgrade: websocket\r Connection: Upgrade\r Sec-WebSocket-Accept: #{accept}\r \r HTTP @parser = Parser.new parser.on_message(&block) end
ws_close()
click to toggle source
# File lib/jellyfish/websocket.rb, line 47 def ws_close sock << Message.close.to_data sock.close end
ws_read(bytes=8192)
click to toggle source
# File lib/jellyfish/websocket.rb, line 37 def ws_read bytes=8192 parser << sock.readpartial(bytes) rescue EOFError sock.close end
ws_start()
click to toggle source
# File lib/jellyfish/websocket.rb, line 31 def ws_start while !sock.closed? && IO.select([sock]) do ws_read end end
ws_write(msg)
click to toggle source
# File lib/jellyfish/websocket.rb, line 43 def ws_write msg sock << Message.new(msg).to_data end