22
33namespace BeyondCode \LaravelWebSockets \Dashboard \Http \Controllers ;
44
5+ use BeyondCode \LaravelWebSockets \Contracts \PushesToPusher ;
56use BeyondCode \LaravelWebSockets \Statistics \Rules \AppId ;
6- use Illuminate \ Broadcasting \ Broadcasters \ PusherBroadcaster ;
7+ use Exception ;
78use Illuminate \Http \Request ;
8- use Pusher \Pusher ;
99
1010class SendMessage
1111{
12+ use PushesToPusher;
13+
1214 /**
1315 * Send the message to the requested channel.
1416 *
@@ -17,7 +19,7 @@ class SendMessage
1719 */
1820 public function __invoke (Request $ request )
1921 {
20- $ validated = $ request ->validate ([
22+ $ request ->validate ([
2123 'appId ' => ['required ' , new AppId ],
2224 'key ' => 'required|string ' ,
2325 'secret ' => 'required|string ' ,
@@ -26,30 +28,27 @@ public function __invoke(Request $request)
2628 'data ' => 'required|json ' ,
2729 ]);
2830
29- $ this ->getPusherBroadcaster ($ validated )-> broadcast (
30- [ $ validated [ ' channel ' ]] ,
31- $ validated [ ' event ' ] ,
32- json_decode ( $ validated [ ' data ' ], true )
33- );
31+ $ broadcaster = $ this ->getPusherBroadcaster ([
32+ ' key ' => $ request -> key ,
33+ ' secret ' => $ request -> secret ,
34+ ' id ' => $ request -> appId ,
35+ ] );
3436
35- return 'ok ' ;
36- }
37+ try {
38+ $ broadcaster ->broadcast (
39+ [$ request ->channel ],
40+ $ request ->event ,
41+ json_decode ($ request ->data , true )
42+ );
43+ } catch (Exception $ e ) {
44+ return response ()->json ([
45+ 'ok ' => false ,
46+ 'exception ' => $ e ->getMessage (),
47+ ]);
48+ }
3749
38- /**
39- * Get the pusher broadcaster for the current request.
40- *
41- * @param array $validated
42- * @return \Illuminate\Broadcasting\Broadcasters\PusherBroadcaster
43- */
44- protected function getPusherBroadcaster (array $ validated ): PusherBroadcaster
45- {
46- $ pusher = new Pusher (
47- $ validated ['key ' ],
48- $ validated ['secret ' ],
49- $ validated ['appId ' ],
50- config ('broadcasting.connections.pusher.options ' , [])
51- );
52-
53- return new PusherBroadcaster ($ pusher );
50+ return response ()->json ([
51+ 'ok ' => true ,
52+ ]);
5453 }
5554}
0 commit comments