Class: EventMachine::WebSocket::Handler

Inherits:
Object
  • Object
show all
Includes:
Debugger
Defined in:
lib/em-websocket/handler.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(connection, debug = false) ⇒ Handler

Returns a new instance of Handler.



37
38
39
40
41
42
# File 'lib/em-websocket/handler.rb', line 37

def initialize(connection, debug = false)
  @connection = connection
  @debug = debug
  @state = :connected
  initialize_framing
end

Instance Attribute Details

#requestObject (readonly)

Returns the value of attribute request.



35
36
37
# File 'lib/em-websocket/handler.rb', line 35

def request
  @request
end

#stateObject (readonly)

Returns the value of attribute state.



35
36
37
# File 'lib/em-websocket/handler.rb', line 35

def state
  @state
end

Class Method Details

.klass_factory(version) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/em-websocket/handler.rb', line 4

def self.klass_factory(version)
  case version
  when 75
    Handler75
  when 76
    Handler76
  when 1..3
    # We'll use handler03 - I believe they're all compatible
    Handler03
  when 5
    Handler05
  when 6
    Handler06
  when 7
    Handler07
  when 8
    # drafts 9, 10, 11 and 12 should never change the version
    # number as they are all the same as version 08.
    Handler08
  when 13
    # drafts 13 to 17 all identify as version 13 as they are
    # only minor changes or text changes.
    Handler13
  else
    # According to spec should abort the connection
    raise HandshakeError, "Protocol version #{version} not supported"
  end
end

Instance Method Details

#close_websocket(code, body) ⇒ Object



49
50
51
# File 'lib/em-websocket/handler.rb', line 49

def close_websocket(code, body)
  # Implemented in subclass
end

#pingObject



64
65
66
67
# File 'lib/em-websocket/handler.rb', line 64

def ping
  # Overridden in subclass
  false
end

#pingable?Boolean

Returns:

  • (Boolean)


69
70
71
72
# File 'lib/em-websocket/handler.rb', line 69

def pingable?
  # Also Overridden
  false
end

#receive_data(data) ⇒ Object



44
45
46
47
# File 'lib/em-websocket/handler.rb', line 44

def receive_data(data)
  @data << data
  process_data(data)
end

#unbindObject



53
54
55
56
57
58
59
60
61
62
# File 'lib/em-websocket/handler.rb', line 53

def unbind
  @state = :closed

  @close_info = defined?(@close_info) ? @close_info : {
    :code => 1006,
    :was_clean => false,
  }

  @connection.trigger_on_close(@close_info )
end