#javascript #asynchronous #pubnub #subscribe #unsubscribe
#javascript #асинхронный #pubnub #Подписка #отказаться от подписки
Вопрос:
<!DOCTYPE html>
<html>
<head>
<title>Currently Active Demo</title>
<style type="text/css">
.currently-active {
position: fixed;
margin: 10px;
padding: 5px;
bottom: 0;
left: 0;
border: solid 1px #AFAFAF;
border-radius: 6px;
font-family: "Arial";
}
</style>
</head>
<body>
<div class="currently-active">
<span>Currently Active: </span><span id="active"></span>
</div>
</body>
<script src="https://cdn.pubnub.com/sdk/javascript/pubnub.4.20.2.js"></script>
<script type="text/javascript">
var active = document.getElementById('active');
function setCurrentlyActiveUsers(numberOfUsers) {
active.innerText = numberOfUsers.toString();
}
setCurrentlyActiveUsers(1);
var pubnub = new PubNub({
publishKey: 'pub-demo',
subscribeKey: 'sub-demo',
heartbeatInterval: 30
});
pubnub.addListener({
presence: function(presenceEvent) {
console.log("Occupancy " presenceEvent.occupancy);
console.log("Action " presenceEvent.action);
setCurrentlyActiveUsers(presenceEvent.occupancy);
}
});
pubnub.subscribe({
channels: ['myWebPage1'],
withPresence: true
});
</script>
</html>
Я написал код, чтобы показать общее количество пользователей, подключенных в реальном времени в core JS с использованием PubNub. Но проблема, с которой я сталкиваюсь, заключается в том, что я не могу получить точное число. Иногда, когда я только что выполнил код, я получаю текущего активного пользователя 0, а иногда и одного. Проблема заключается в том, что действие присутствия присоединяется и уходит, но я не знаю, как автоматически иногда я получаю значение действия присутствия как join, а иногда как leave, и это тоже случайно. Пожалуйста, помогите мне решить эту проблему, чтобы я мог одновременно получать количество активных пользователей, подключенных в режиме реального времени, и соответственно увеличивать или уменьшать их количество
Комментарии:
1. Во-первых, вы не должны показывать свои ключи pub / sub. Пожалуйста, отредактируйте их. Во-вторых, как вы подключаете других пользователей / клиентов к своему каналу?
2. Привет @CraigConover, конечно, я удалил клавиши pub / sub и подключаю их, используя тот же код. Что я делаю, так это открываю один и тот же код в нескольких браузерах, и его значение обновляется, т.Е. Увеличивается при открытии той же ссылки в новом браузере и уменьшается при закрытии браузера. Но значение не является точным иногда, когда я открываю его только в одном браузере, оно показывает 0, но иногда показывает 1. Я не знаю, почему это происходит так
3. Это потому, что происходит что-то асинхронное. Когда вы подписываетесь на канал, отправляется соединение, и заполняемость увеличивается для этого канала в сети PN. Но иногда это событие соединения отправляется до того, как этот счетчик увеличивается. Это просто условие асинхронной гонки и должно влиять только на присоединяющегося клиента. Все остальные клиенты должны просто получить join, а вы — правильное количество. Дай мне знать.
4. @CraigConover не могли бы вы, пожалуйста, показать мне демонстрацию, вы также можете использовать мой приведенный выше код, если хотите
5. Я бы просто рекомендовал начать работу с JS SDK , а затем прочитать все остальные документы там. Я думаю, это даст вам информацию, которую вы ищете, и многое другое.