Как показать количество пользователей, подключенных в pubnub, используя метод присутствия и подписки

#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 , а затем прочитать все остальные документы там. Я думаю, это даст вам информацию, которую вы ищете, и многое другое.