Доброй ночи! Есть чат в котором получение сообщений и списка пользователей онлайн выполняется через Socket.io.
Код события:
class ChatOnline implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $data;
public function __construct($data)
{
$this->data = $data;
$this->dontBroadcastToCurrentUser();
}
public function broadcastOn()
{
return new PresenceChannel('chat');
}
}
Код JS где выполняется подключение к каналу:
Echo.join('chat')
.here((users) => {
$.each(users, function(index, value){
$('#chat-online').append('<div id="user-' + value.id + '">' + value.name + '</div>');
});
})
.joining((user) => {
$('#chat-online').append('<div id="user-' + user.id + '">' + user.name + '</div>');
})
.leaving((user) => {
$('#user-' + user.id).remove();
}).listen('ChatOnline', (data) => {
switch (data.data.type) {
case 1: Выполняется если приходит сообщение; break;
case 2: Выполняется если было удалено сообщение; break;
});
При отправке сообщения я передаю в data параметр type = 1, при удаление сообщения type = 2. Что то мне подсказывает что данный способ грязный, подскажите как сделать правильно, передавать на 1 канал два события или еще как?