Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Сделал у себя в проекте соц сети страничку, где юзер может видеть окошки с чатами(нажимать на них подгружать сообщения), в каждом окошке видно последнее сообщение чата. Поставил эхо сервер и прослушивание на уровне 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
Не в сети