Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 19.06.2019 15:00:19

Как правильно сделать подключение и отсоединение канала чата

Сделал у себя в проекте соц сети страничку, где юзер может видеть окошки с чатами(нажимать на них подгружать сообщения), в каждом окошке видно последнее сообщение чата. Поставил эхо сервер и прослушивание на уровне js. Всё работает, но хочу как-нить оптимизировать подключение к чатам.

Сейчас я по сути при каждой подгрузке чатов извне сначала отключаю канал чата на фронте, а потом подключаю, что бы не создавались копии подключения(ведь в таком случае на клиенте событие дублируется сток раз, скок подключений).

Компонент с подключение чата.

class Messages extends React.Component {
    componentDidMount() {
        this.props.getChats();
    }
 
    render() {
        let messages = this.props.messages, content;
 
    for (let chatId in messages.chats) {
            this.props.echoPushMessage(chatId);
        }

/////...... иниже подключение в редакс 
const mapDispatchToProps = (dispatch,state, props) => {
    return {
        getChats: () => dispatch(getChats()),
        getChatMessages: (chatId, messageId) => dispatch(getMessages(chatId, messageId)),
        echoPushMessage: (chatId) => dispatch(echoPushMessage(chatId)),
        messageSend: (msg, chatId) => dispatch(messageSend(msg, chatId)),
        messagesSliderDownTrue: () => dispatch(messagesSliderDownTrue()),
        messagesSliderDownFalse: () => dispatch(messagesSliderDownFalse()),
        writeMessage: (chatMessage, chatId) => dispatch(writeMessage(chatMessage, chatId))
    };
};
 
export default connect(
    mapState2Props,
    mapDispatchToProps
)(Messages);

И echoPushMessage

export function echoPushMessage(chatId) {
    return function (dispatch) {
        window.Echo.leave(`chat.${chatId}`);
        window.Echo.channel(`chat.${chatId}`)
            .listen('PushMessageEvent', (data) => {
                dispatch({
                    type: MESSAGES_ECHO_PUSH_MESSAGE,
                    data
                });
            })
    };
}

Изменено Kirir (19.06.2019 15:01:39)


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

Подвал раздела