@@ -183,6 +183,56 @@ public function testPusherData()
183
183
], $ webSocket ->getSentMessages ());
184
184
}
185
185
186
+ public function testPusherDataSameChannel ()
187
+ {
188
+ $ observable = $ this ->createColdObservable ([
189
+ onNext (320 , '{"event":"pusher:connection_established","data":"{\"socket_id\":\"218656.9503498\",\"activity_timeout\":120}"} ' ),
190
+ onNext (340 , '{"event":"pusher_internal:subscription_succeeded","data":"{}","channel":"test"} ' ),
191
+ onNext (350 , '{"event":"new-listing","data":["test1"],"channel":"test"} ' ),
192
+ onNext (370 , '{"event":"new-listing","data":["test10"],"channel":"other"} ' ),
193
+ onNext (390 , '{"event":"new-listing","data":["test2"],"channel":"test"} ' ),
194
+ onNext (400 , '{"event":"new-listing","data":["test3"],"channel":"test"} ' ),
195
+ onCompleted (900 ),
196
+ ]);
197
+
198
+ $ webSocket = new TestWebSocketSubject ($ observable , $ this ->scheduler );
199
+
200
+ $ client = new AsyncClient ($ webSocket );
201
+
202
+ $ results1 = $ this ->scheduler ->createObserver ();
203
+ $ results2 = $ this ->scheduler ->createObserver ();
204
+
205
+ $ this ->scheduler ->scheduleAbsolute ($ this ->scheduler ::CREATED , function () use ($ client , $ results1 ) {
206
+ $ client ->channel ('test ' )->subscribe ($ results1 );
207
+ });
208
+
209
+ $ this ->scheduler ->scheduleAbsolute (460 , function () use ($ client , $ results2 ) {
210
+ $ client ->channel ('test ' )->subscribe ($ results2 );
211
+ });
212
+
213
+ $ this ->scheduler ->start ();
214
+
215
+ $ this ->assertMessages ([
216
+ onNext (450 , Event::createFromMessage (json_decode ('{"event":"new-listing","data":["test1"],"channel":"test"} ' , true ))),
217
+ onNext (490 , Event::createFromMessage (json_decode ('{"event":"new-listing","data":["test2"],"channel":"test"} ' , true ))),
218
+ onNext (500 , Event::createFromMessage (json_decode ('{"event":"new-listing","data":["test3"],"channel":"test"} ' , true ))),
219
+ onCompleted (1002 ),
220
+ ], $ results1 ->getMessages ());
221
+
222
+ $ this ->assertMessages ([
223
+ onNext (490 , Event::createFromMessage (json_decode ('{"event":"new-listing","data":["test2"],"channel":"test"} ' , true ))),
224
+ onNext (500 , Event::createFromMessage (json_decode ('{"event":"new-listing","data":["test3"],"channel":"test"} ' , true ))),
225
+ onCompleted (1002 ),
226
+ ], $ results2 ->getMessages ());
227
+
228
+ $ this ->assertSubscriptions ([subscribe (100 , 1000 )], $ observable ->getSubscriptions ());
229
+
230
+ $ this ->assertEquals ([
231
+ [420 , '{"event":"pusher:subscribe","data":{"channel":"test"}} ' ],
232
+ [1002 , '{"event":"pusher:unsubscribe","data":{"channel":"test"}} ' ],
233
+ ], $ webSocket ->getSentMessages ());
234
+ }
235
+
186
236
public function testPusherPing ()
187
237
{
188
238
$ observable = $ this ->createHotObservable ([
0 commit comments