2
2
3
3
namespace BeyondCode \LaravelWebSockets \Dashboard \Http \Controllers ;
4
4
5
+ use BeyondCode \LaravelWebSockets \Contracts \PushesToPusher ;
5
6
use BeyondCode \LaravelWebSockets \Statistics \Rules \AppId ;
6
- use Illuminate \ Broadcasting \ Broadcasters \ PusherBroadcaster ;
7
+ use Exception ;
7
8
use Illuminate \Http \Request ;
8
- use Pusher \Pusher ;
9
9
10
10
class SendMessage
11
11
{
12
+ use PushesToPusher;
13
+
12
14
/**
13
15
* Send the message to the requested channel.
14
16
*
@@ -17,7 +19,7 @@ class SendMessage
17
19
*/
18
20
public function __invoke (Request $ request )
19
21
{
20
- $ validated = $ request ->validate ([
22
+ $ request ->validate ([
21
23
'appId ' => ['required ' , new AppId ],
22
24
'key ' => 'required|string ' ,
23
25
'secret ' => 'required|string ' ,
@@ -26,30 +28,27 @@ public function __invoke(Request $request)
26
28
'data ' => 'required|json ' ,
27
29
]);
28
30
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
+ ] );
34
36
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
+ }
37
49
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
+ ]);
54
53
}
55
54
}
0 commit comments