forked from 4gekkman/R2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBroadcast.php
90 lines (71 loc) · 3.39 KB
/
Broadcast.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
////======================================================////
//// ////
//// Событие Broadcast ////
//// ////
////======================================================////
//-------------------//
// Пространство имён //
//-------------------//
namespace R2;
//---------------------------------//
// Подключение необходимых классов //
//---------------------------------//
// Базовые классы, необходимые для работы событий вообще
use App\Events\Event as OriginalEvent,
Illuminate\Queue\SerializesModels,
Illuminate\Broadcasting\Channel,
Illuminate\Broadcasting\PrivateChannel,
Illuminate\Broadcasting\PresenceChannel,
Illuminate\Broadcasting\InteractsWithSockets,
Illuminate\Contracts\Broadcasting\ShouldBroadcast;
//---------------//
// Событие Event //
//---------------//
class Broadcast extends OriginalEvent implements ShouldBroadcast
{
//---------------------//
// А. Подключить трейт //
//---------------------//
use SerializesModels;
//-------------------------------------//
// Б. Переменные для приёма аргументов //
//-------------------------------------//
// - При трансляции, public-переменные будут переданы
public $data;
//------------------------------------------------------------------//
// В. Принять аргументы, переданные при создании экземпляра события //
//------------------------------------------------------------------//
// - Переданные в аргументе экземпляры модели будут сериализоваться
public function __construct($data)
{
$this->data = $data;
}
//--------------------------------------//
// Г. Методы для транслируемого события //
//--------------------------------------//
// Г1. Массив каналов, куда транслятор должен транслировать
//---------------------------------------------------------
public function broadcastOn()
{
//$channels_classes = [];
//foreach($channels as $channel) {
// array_push($channels_classes, new Channel($channel));
//}
// Вернуть массив таких каналов
// - Подсказка: можно использовать ID пользователя
return $this->data['channels'];
}
// Г2. Массив данных, которые пользователь должен транслировать
//-------------------------------------------------------------
// public function broadcastWith()
// {
// return ['name' => 'Иван', 'age' => 18];
// }
// Г3. В какую очередь поместить событие
//--------------------------------------
public function onQueue()
{
return array_key_exists('queue', $this->data) ? $this->data['queue'] : 'default';
}
}