#javascript #getstream-io
#javascript #getstream-io
Вопрос:
Я пытаюсь отладить, почему уведомления в реальном времени приходят очень долго, используя realtime api. Извлечение данных вручную работает так, как ожидалось.
Я зарегистрировался в личной учетной записи getstream и использовал эти ключи, и задержка уведомления соответствует ожиданиям.
Однако при использовании точно такого же кода и простом переключении клавиш в существующем приложении, которое у нас есть, для получения требуется более 16 минут (!!!) (я не прикрепляю здесь видео, поскольку оно огромное, а просто скриншот времени получения уведомления).
Я могу подтвердить, что данные отправляются в getstream, просмотрев вкладку stream Explorer на веб-сайте и включив автоматическое обновление.
Вот пример poc-кода, который я написал, чтобы проиллюстрировать проблему https://github.com/parasquid/getstream_poc/blob/master/views/index.html.erb
<script src="https://cdn.jsdelivr.net/npm/getstream/dist/js_min/getstream.js"></script>
hello!
<div id="timer"></div>
<p><button id="add-activity">Add activity</button>
<script>
var interval
var client = stream.connect('<%= @apikey %>', null, '<%= @appid %>');
var userFeed = client.feed('user', '<%= @user_id %>', '<%= @user_token %>')
var userSubscription = userFeed.subscribe(
() => userFeed.get()
.then(streamData => console.log(streamData))
.then(() => clearInterval(interval)),
(errors) => console.error({errors})
);
var notificationFeed = client.feed('notification', '<%= @user_id %>', '<%= @notification_token %>')
var notificationSubscription = notificationFeed.subscribe(
() => notificationFeed.get().then(streamData => console.log(streamData)),
(errors) => console.error({errors})
);
button = document.querySelector("button#add-activity")
button.onclick = (e) => {
timer = document.querySelector("div#timer");
var seconds = 0
interval = setInterval(() => {
seconds ;
timer.innerHTML = seconds;
}, 1000);
fetch("/add_activity")
.then(r => r.json())
.then(json => console.log(json));
}
</script>
Из того, что я могу собрать, это, похоже, относится к учетной записи, а не к реализации; или, может быть, я просто делаю что-то странное. Был бы признателен за подсказки!
Обновление 2019-04-02
Я создал другое приложение, которое максимально точно повторяет настройки другой учетной записи (просто меняю местоположение, поскольку, похоже, нам нужно обратиться в службу поддержки, чтобы изменить местоположение существующего приложения, а мы используем только группы пользователей и ленты уведомлений), и, хотя задержка определенно больше, это не так плохо, как исходное приложение.
Комментарии:
1. есть ли какая-либо разница в двух тестируемых вами приложениях? например. используются группы каналов / регион…
2. единственная разница, я думаю, будет в местоположении? Приложение для медленной учетной записи находится в Сингапуре, а приложение для недавно созданной учетной записи — на востоке США. Мой локальный компьютер в настоящее время находится в Малайзии, поэтому я думал, что задержки будут быстрее. Хорошая идея, позвольте мне посмотреть, изменит ли изменение местоположения ситуацию.
3. @TommasoBarbugli Я добавил больше информации выше. Я попробовал ваше предложение (зеркально отображать группы каналов и местоположение), и хотя задержка больше (11 секунд вместо 1), это все еще не так плохо, как исходное приложение, которое мы используем.