File tree Expand file tree Collapse file tree 1 file changed +11
-6
lines changed
lib/action_cable/subscription_adapter Expand file tree Collapse file tree 1 file changed +11
-6
lines changed Original file line number Diff line number Diff line change @@ -109,17 +109,22 @@ def last_message_id
109109 end
110110
111111 def channels
112- @channels ||= Concurrent ::Hash . new
112+ @channels ||= Concurrent ::Map . new
113113 end
114114
115115 def broadcast_messages
116- ::SolidCable ::Message . broadcastable ( channels . keys , channels . values . min ) .
116+ current_channels = channels . dup
117+
118+ ::SolidCable ::Message .
119+ broadcastable ( current_channels . keys , current_channels . values . min ) .
117120 each do |message |
118- if channels [ message . channel ] . present? && channels [ message . channel ] < message . id
119- broadcast ( message . channel , message . payload )
120- channels [ message . channel ] = message . id
121+ channels . compute_if_present ( message . channel ) do |last_id |
122+ break if last_id >= message . id
123+
124+ broadcast ( message . channel , message . payload )
125+ message . id
126+ end
121127 end
122- end
123128 end
124129
125130 def with_polling_volume
You can’t perform that action at this time.
0 commit comments