Class: WasmDRb::WebSocket

Inherits:
Object
  • Object
show all
Defined in:
lib/wasm_drb/websocket.rb

Defined Under Namespace

Classes: MessageEvent

Instance Method Summary collapse

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

#closeObject

alias_native



53
54
55
# File 'lib/wasm_drb/websocket.rb', line 53

def close
  @js_ws.close
end

#closed?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/wasm_drb/websocket.rb', line 48

def closed?
  @js_ws[:readyState] == 3
end

#closing?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/wasm_drb/websocket.rb', line 44

def closing?
  @js_ws[:readyState] == 2
end

#connecting?Boolean

Returns:

  • (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 onmessage(&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

Returns:

  • (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