@Corsair_TM

Как прослушивать 2 события на одном канале?

Доброй ночи! Есть чат в котором получение сообщений и списка пользователей онлайн выполняется через 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 канал два события или еще как?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
Alex_Wells
@Alex_Wells
PHP/Kotlin
Одно событие равно одно действие.

type в данном случае - говнокод, так как нету ни одной причины использовать его, а не отдельные события (которые проще поддерживать, которые можно типизировать без боли и т.д.).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы