Class: WasmDRb::WebSocket
- Inherits:
-
Object
- Object
- WasmDRb::WebSocket
- Defined in:
- lib/wasm_drb/websocket.rb
Defined Under Namespace
Classes: MessageEvent
Instance Method Summary collapse
- #add_event_listener(type, &listener) ⇒ Object
-
#close ⇒ Object
alias_native.
- #closed? ⇒ Boolean
- #closing? ⇒ Boolean
- #connecting? ⇒ Boolean
-
#initialize(uri) ⇒ WebSocket
constructor
A new instance of WebSocket.
- #off(handler) ⇒ Object
- #onclose(&block) ⇒ Object
- #onmessage(&block) ⇒ Object
- #onopen(&block) ⇒ Object
- #open? ⇒ Boolean
- #remove_event_listener(type, &listener) ⇒ Object
- #send(mesg) ⇒ Object
Constructor Details
#initialize(uri) ⇒ WebSocket
Returns a new instance of WebSocket.
6 7 8 9 10 11 |
# File 'lib/wasm_drb/websocket.rb', line 6 def initialize(uri) @js_ws = JS.global[:WebSocket].new(uri) @js_ws[:binaryType] = 'arraybuffer' @listeners = {} end |
Instance Method Details
#add_event_listener(type, &listener) ⇒ Object
61 62 63 |
# File 'lib/wasm_drb/websocket.rb', line 61 def add_event_listener(type, &listener) @js_ws.addEventListener(type, &listener) end |
#close ⇒ Object
alias_native
53 54 55 |
# File 'lib/wasm_drb/websocket.rb', line 53 def close @js_ws.close end |
#closed? ⇒ Boolean
48 49 50 |
# File 'lib/wasm_drb/websocket.rb', line 48 def closed? @js_ws[:readyState] == 3 end |
#closing? ⇒ Boolean
44 45 46 |
# File 'lib/wasm_drb/websocket.rb', line 44 def closing? @js_ws[:readyState] == 2 end |
#connecting? ⇒ Boolean
36 37 38 |
# File 'lib/wasm_drb/websocket.rb', line 36 def connecting? @js_ws[:readyState] == 0 end |
#off(handler) ⇒ Object
32 33 34 |
# File 'lib/wasm_drb/websocket.rb', line 32 def off handler remove_event_listener(*@listeners[handler]) end |
#onclose(&block) ⇒ Object
26 27 28 29 30 |
# File 'lib/wasm_drb/websocket.rb', line 26 def onclose(&block) listener = Proc.new {|_event| yield } @listeners[block] = [:close, listener] add_event_listener('close', &listener) end |
#onmessage(&block) ⇒ Object
13 14 15 16 17 |
# File 'lib/wasm_drb/websocket.rb', line 13 def (&block) listener = Proc.new {|event| yield MessageEvent.new(event) if self.open? } @listeners[block] = [:message, listener] add_event_listener('message', &listener) end |
#onopen(&block) ⇒ Object
19 20 21 22 23 24 |
# File 'lib/wasm_drb/websocket.rb', line 19 def onopen(&block) listener = Proc.new {|_event| yield } @listeners[block] = [:open, listener] add_event_listener('open', &listener) listener end |
#open? ⇒ Boolean
40 41 42 |
# File 'lib/wasm_drb/websocket.rb', line 40 def open? @js_ws[:readyState] == 1 end |
#remove_event_listener(type, &listener) ⇒ Object
65 66 67 |
# File 'lib/wasm_drb/websocket.rb', line 65 def remove_event_listener(type, &listener) @js_ws.removeEventListener(type, &listener) end |
#send(mesg) ⇒ Object
57 58 59 |
# File 'lib/wasm_drb/websocket.rb', line 57 def send mesg @js_ws.call(:send, mesg.buffer) end |