Class: Faye::WebSocket
- Inherits:
-
Object
- Object
- Faye::WebSocket
- Extended by:
- Forwardable
- Includes:
- Publisher
- Defined in:
- lib/faye/util/web_socket.rb,
lib/faye/util/web_socket/draft75_parser.rb,
lib/faye/util/web_socket/draft76_parser.rb,
lib/faye/util/web_socket/protocol8_parser.rb
Defined Under Namespace
Classes: Draft75Parser, Draft76Parser, Event, Protocol8Parser, Stream
Constant Summary collapse
- CONNECTING =
0
- OPEN =
1
- CLOSING =
2
- CLOSED =
3
Instance Attribute Summary collapse
-
#onclose ⇒ Object
Returns the value of attribute onclose.
-
#onerror ⇒ Object
Returns the value of attribute onerror.
-
#onmessage ⇒ Object
Returns the value of attribute onmessage.
-
#onopen ⇒ Object
Returns the value of attribute onopen.
-
#ready_state ⇒ Object
readonly
Returns the value of attribute ready_state.
-
#request ⇒ Object
readonly
Returns the value of attribute request.
-
#url ⇒ Object
readonly
Returns the value of attribute url.
Class Method Summary collapse
Instance Method Summary collapse
- #add_event_listener(type, listener, use_capture) ⇒ Object
- #close(*args) ⇒ Object
- #dispatch_event(event) ⇒ Object
-
#initialize(request) ⇒ WebSocket
constructor
A new instance of WebSocket.
- #receive(data) ⇒ Object
- #remove_event_listener(type, listener, use_capture) ⇒ Object
- #send(data, type = nil, error_type = nil) ⇒ Object
Methods included from Publisher
#add_subscriber, #count_subscribers, #publish_event, #remove_subscriber, #remove_subscribers
Constructor Details
#initialize(request) ⇒ WebSocket
Returns a new instance of WebSocket.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/faye/util/web_socket.rb', line 31 def initialize(request) @request = request @callback = @request.env['async.callback'] @stream = Stream.new @callback.call [200, RackAdapter::TYPE_JSON, @stream] @url = determine_url @ready_state = CONNECTING @buffered_amount = 0 @parser = WebSocket.parser(@request).new(self) @stream.write(@parser.handshake_response) @ready_state = OPEN event = Event.new event.init_event('open', false, false) dispatch_event(event) @request.env[Thin::Request::WEBSOCKET_RECEIVE_CALLBACK] = @parser.method(:parse) end |
Instance Attribute Details
#onclose ⇒ Object
Returns the value of attribute onclose.
16 17 18 |
# File 'lib/faye/util/web_socket.rb', line 16 def onclose @onclose end |
#onerror ⇒ Object
Returns the value of attribute onerror.
16 17 18 |
# File 'lib/faye/util/web_socket.rb', line 16 def onerror @onerror end |
#onmessage ⇒ Object
Returns the value of attribute onmessage.
16 17 18 |
# File 'lib/faye/util/web_socket.rb', line 16 def @onmessage end |
#onopen ⇒ Object
Returns the value of attribute onopen.
16 17 18 |
# File 'lib/faye/util/web_socket.rb', line 16 def onopen @onopen end |
#ready_state ⇒ Object (readonly)
Returns the value of attribute ready_state.
15 16 17 |
# File 'lib/faye/util/web_socket.rb', line 15 def ready_state @ready_state end |
#request ⇒ Object (readonly)
Returns the value of attribute request.
15 16 17 |
# File 'lib/faye/util/web_socket.rb', line 15 def request @request end |
#url ⇒ Object (readonly)
Returns the value of attribute url.
15 16 17 |
# File 'lib/faye/util/web_socket.rb', line 15 def url @url end |
Class Method Details
.parser(request) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/faye/util/web_socket.rb', line 21 def self.parser(request) if request.env['HTTP_SEC_WEBSOCKET_VERSION'] Protocol8Parser elsif request.env['HTTP_SEC_WEBSOCKET_KEY1'] Draft76Parser else Draft75Parser end end |
Instance Method Details
#add_event_listener(type, listener, use_capture) ⇒ Object
68 69 70 |
# File 'lib/faye/util/web_socket.rb', line 68 def add_event_listener(type, listener, use_capture) add_subscriber(type, listener) end |
#close(*args) ⇒ Object
65 66 |
# File 'lib/faye/util/web_socket.rb', line 65 def close(*args) end |
#dispatch_event(event) ⇒ Object
76 77 78 79 80 81 82 83 |
# File 'lib/faye/util/web_socket.rb', line 76 def dispatch_event(event) event.target = event.current_target = self event.event_phase = Event::AT_TARGET publish_event(event.type, event) callback = __send__("on#{ event.type }") callback.call(event) if callback end |
#receive(data) ⇒ Object
53 54 55 56 57 58 |
# File 'lib/faye/util/web_socket.rb', line 53 def receive(data) event = Event.new event.init_event('message', false, false) event.data = Faye.encode(data) dispatch_event(event) end |
#remove_event_listener(type, listener, use_capture) ⇒ Object
72 73 74 |
# File 'lib/faye/util/web_socket.rb', line 72 def remove_event_listener(type, listener, use_capture) remove_subscriber(type, listener) end |