Laravel pusher.js - считать пользовательские сессии
Я начал с Laravel + Pusher и использовал демонстрационное приложение из блога Pusher. Здесь в исходном коде описано, как подсчитываются пользовательские соединения. Но я изо всех сил пытаюсь посчитать сессии пользователя как дополнительное значение.
Пример: Джейн и Джон соединяются, я получаю 2 для usersEditing.length. Если Джейн подключается из двух браузеров, я получаю 1 для usersEditing.length.
<script>
export default {
props: [
'note',
],
data() {
return {
title: this.note.title,
body: this.note.body,
usersEditing: [],
status: ''
}
},
mounted() {
Echo.join(`note.${this.note.slug}`)
.here(users => {
this.usersEditing = users;
})
.joining(user => {
this.usersEditing.push(user);
})
.leaving(user => {
this.usersEditing = this.usersEditing.filter(u => u != user);
})
.listenForWhisper('editing', (e) => {
this.title = e.title;
this.body = e.body;
})
.listenForWhisper('saved', (e) => {
this.status = e.status;
// clear is status after 1s
setTimeout(() => {
this.status = '';
}, 1000);
});
},
methods: {
editingNote() {
let channel = Echo.join(`note.${this.note.slug}`);
// show changes after 1s
setTimeout(() => {
channel.whisper('editing', {
title: this.title,
body: this.body
});
}, 1000);
},
updateNote() {
let note = {
title: this.title,
body: this.body
};
// persist to database
axios.patch(`/edit/${this.note.slug}`, note)
.then(response => {
// show saved status
this.status = response.data;
// clear is status after 1s
setTimeout(() => {
this.status = '';
}, 1000);
// show saved status to others
Echo.join(`note.${this.note.slug}`)
.whisper('saved', {
status: response.data
});
});
}
}
}
Мне нужны дополнительные сеансы значения для каждого пользователя. Таким образом, я могу показать количество подключений по пользователю и в целом.
Пусть кто-нибудь может помочь мне здесь.
Спасибо заранее, Дейв
1 ответ
Джейн и Джон соединяются, я получаю 2 за
usersEditing.length
, Если Джейн подключается из двух браузеров, я получаю 1 заusersEditing.length
,
Это связано с тем, что каналы присутствия отправителя основаны на уникальных пользователях, а не на соединениях. Если вы хотите поддерживать общее количество подключений или сеансов, вам нужно что-то реализовать самостоятельно.
Есть несколько способов сделать это. /channels
Конечная точка в толкателе HTTP API позволяет получить subscription_count
так же как user_count
,
Вы можете настроить конечную точку на вашем сервере, которая извлекает эти данные из API толкателя и передает обновление на канал, содержащий subscription_count
, Если вы вызываете эту конечную точку со своего клиента каждый раз, когда подписка завершается успешно. Тогда вы могли бы поддерживать количество подписчиков в каждом клиенте.
var channel = pusher.subscribe('presence-meeting-11');
channel.bind('pusher:subscription_succeeded', function(members) {
// call your new endpoint
});