Class: WSocketIO::Presence
- Inherits:
-
Object
- Object
- WSocketIO::Presence
- Defined in:
- lib/wsocket_io.rb
Overview
─── Presence ───────────────────────────────────────────────
Instance Method Summary collapse
- #enter(data: nil) ⇒ Object
- #get ⇒ Object
- #handle_event(action, data) ⇒ Object
-
#initialize(channel_name, send_fn) ⇒ Presence
constructor
A new instance of Presence.
- #leave ⇒ Object
- #on_enter(&block) ⇒ Object
- #on_leave(&block) ⇒ Object
- #on_members(&block) ⇒ Object
- #on_update(&block) ⇒ Object
- #update(data) ⇒ Object
Constructor Details
#initialize(channel_name, send_fn) ⇒ Presence
Returns a new instance of Presence.
51 52 53 54 55 56 57 58 |
# File 'lib/wsocket_io.rb', line 51 def initialize(channel_name, send_fn) @channel_name = channel_name @send_fn = send_fn @enter_cbs = [] @leave_cbs = [] @update_cbs = [] @members_cbs = [] end |
Instance Method Details
#enter(data: nil) ⇒ Object
60 61 62 63 |
# File 'lib/wsocket_io.rb', line 60 def enter(data: nil) @send_fn.call({ action: 'presence.enter', channel: @channel_name, data: data }) self end |
#get ⇒ Object
75 76 77 78 |
# File 'lib/wsocket_io.rb', line 75 def get @send_fn.call({ action: 'presence.get', channel: @channel_name }) self end |
#handle_event(action, data) ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/wsocket_io.rb', line 85 def handle_event(action, data) case action when 'presence.enter' m = parse_member(data) @enter_cbs.each { |cb| cb.call(m) } when 'presence.leave' m = parse_member(data) @leave_cbs.each { |cb| cb.call(m) } when 'presence.update' m = parse_member(data) @update_cbs.each { |cb| cb.call(m) } when 'presence.members' members = (data['members'] || []).map { |d| parse_member(d) } @members_cbs.each { |cb| cb.call(members) } end end |
#leave ⇒ Object
65 66 67 68 |
# File 'lib/wsocket_io.rb', line 65 def leave @send_fn.call({ action: 'presence.leave', channel: @channel_name }) self end |
#on_enter(&block) ⇒ Object
80 |
# File 'lib/wsocket_io.rb', line 80 def on_enter(&block) = (@enter_cbs << block; self) |
#on_leave(&block) ⇒ Object
81 |
# File 'lib/wsocket_io.rb', line 81 def on_leave(&block) = (@leave_cbs << block; self) |
#on_members(&block) ⇒ Object
83 |
# File 'lib/wsocket_io.rb', line 83 def on_members(&block) = (@members_cbs << block; self) |
#on_update(&block) ⇒ Object
82 |
# File 'lib/wsocket_io.rb', line 82 def on_update(&block) = (@update_cbs << block; self) |
#update(data) ⇒ Object
70 71 72 73 |
# File 'lib/wsocket_io.rb', line 70 def update(data) @send_fn.call({ action: 'presence.update', channel: @channel_name, data: data }) self end |