cable_room 0.1.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/cable_room/channel_base.rb +18 -5
- data/lib/cable_room/channel_tracker.rb +2 -2
- data/lib/cable_room/room/base.rb +6 -2
- data/lib/cable_room/room/broadcasting.rb +13 -0
- data/lib/cable_room/room/input_handling.rb +51 -5
- data/lib/cable_room/room/port_management.rb +295 -0
- data/lib/cable_room/room/port_scoping.rb +40 -0
- data/lib/cable_room/room/user_management.rb +67 -28
- data/lib/cable_room/room.rb +5 -3
- data/lib/cable_room/room_member.rb +29 -13
- data/lib/cable_room/version.rb +1 -1
- data/spec/internal/log/test.log +3056 -0
- metadata +4 -2
- data/lib/cable_room/room/member_management.rb +0 -67
|
@@ -28,11 +28,6 @@ module CableRoom
|
|
|
28
28
|
}
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
if blk
|
|
32
|
-
raise ArgumentError, "Cannot specify both a block and `on_opened:`" if kwargs[:on_opened]
|
|
33
|
-
kwargs[:on_opened] = blk
|
|
34
|
-
end
|
|
35
|
-
|
|
36
31
|
as = respond_to?(:current_user) ? current_user : nil if as == :not_given
|
|
37
32
|
|
|
38
33
|
if as
|
|
@@ -40,7 +35,7 @@ module CableRoom
|
|
|
40
35
|
kwargs[:extra][:as] = as
|
|
41
36
|
end
|
|
42
37
|
|
|
43
|
-
RoomMembership.new(self, room_class, room_key, **kwargs)
|
|
38
|
+
RoomMembership.new(self, room_class, room_key, **kwargs, &blk)
|
|
44
39
|
end
|
|
45
40
|
|
|
46
41
|
def ping_room_memberships
|
|
@@ -61,7 +56,9 @@ module CableRoom
|
|
|
61
56
|
on_closed: nil,
|
|
62
57
|
on_opened: nil,
|
|
63
58
|
on_message: nil,
|
|
64
|
-
|
|
59
|
+
tags: [],
|
|
60
|
+
extra: nil,
|
|
61
|
+
&preconfigure
|
|
65
62
|
)
|
|
66
63
|
@token = SecureRandom.hex(16)
|
|
67
64
|
@has_left = false
|
|
@@ -75,6 +72,7 @@ module CableRoom
|
|
|
75
72
|
@on_closed = on_closed
|
|
76
73
|
@on_message = on_message
|
|
77
74
|
|
|
75
|
+
@tags = Array(tags).map(&:to_sym)
|
|
78
76
|
@extra = extra
|
|
79
77
|
|
|
80
78
|
@cable_channel._room_memberships << self
|
|
@@ -89,7 +87,22 @@ module CableRoom
|
|
|
89
87
|
handle_received_message(message)
|
|
90
88
|
end
|
|
91
89
|
|
|
92
|
-
|
|
90
|
+
# Listen to user-specific channel
|
|
91
|
+
if extra && extra[:as]
|
|
92
|
+
stream_port(extra[:as]) do |message|
|
|
93
|
+
handle_received_message(message)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
@tags.each do |tag|
|
|
98
|
+
stream_port(tag) do |message|
|
|
99
|
+
handle_received_message(message)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
preconfigure&.call(self)
|
|
104
|
+
|
|
105
|
+
transmit_port_connected
|
|
93
106
|
|
|
94
107
|
maybe_provision_room
|
|
95
108
|
end
|
|
@@ -107,7 +120,7 @@ module CableRoom
|
|
|
107
120
|
def ping!
|
|
108
121
|
return if left?
|
|
109
122
|
|
|
110
|
-
self << { type: '
|
|
123
|
+
self << { type: 'port_ping' }
|
|
111
124
|
maybe_provision_room
|
|
112
125
|
end
|
|
113
126
|
|
|
@@ -116,7 +129,7 @@ module CableRoom
|
|
|
116
129
|
|
|
117
130
|
close_streamed_ports!
|
|
118
131
|
@cable_channel._room_memberships.delete(self)
|
|
119
|
-
self << { type: '
|
|
132
|
+
self << { type: 'port_disconnected' }
|
|
120
133
|
@has_left = true
|
|
121
134
|
@on_closed&.call(self)
|
|
122
135
|
end
|
|
@@ -139,7 +152,7 @@ module CableRoom
|
|
|
139
152
|
|
|
140
153
|
case message['type']
|
|
141
154
|
when 'room_opened'
|
|
142
|
-
|
|
155
|
+
transmit_port_connected
|
|
143
156
|
@on_opened&.call(self)
|
|
144
157
|
when 'room_closed'
|
|
145
158
|
@on_closed&.call(self)
|
|
@@ -153,8 +166,11 @@ module CableRoom
|
|
|
153
166
|
|
|
154
167
|
private
|
|
155
168
|
|
|
156
|
-
def
|
|
157
|
-
msg = {
|
|
169
|
+
def transmit_port_connected
|
|
170
|
+
msg = {
|
|
171
|
+
type: 'port_connected',
|
|
172
|
+
tags: @tags,
|
|
173
|
+
}
|
|
158
174
|
msg[:extra] = ::ActiveJob::Arguments.serialize([@extra]) if @extra
|
|
159
175
|
self << msg
|
|
160
176
|
end
|
data/lib/cable_room/version.rb
CHANGED