Получайте обновления в реальном времени от Microsoft Graph API (бета) Communication API - PullRequest
0 голосов
/ 19 марта 2020

В настоящее время я использую Microsoft Graph API (бета) для получения статуса присутствия , например, в сети, вдали и т. Д. c. в веб-части spfx (используя React) с использованием GraphClient:

this.props.context.msGraphClientFactory.getClient().then(async (client: MSGraphClient) => {
    let response = await client
      .api('/communications/getPresencesByUserId')
      .version('beta')
      .post(postData)
      console.log("Communication API Response: "+ response);
    this.usersWithPresence = response.value;
});

Это работает нормально, но чтобы получить обновленный статус пользователя, мне нужно обновить sh страницу, чтобы сделать еще один вызов API и обновить статус присутствия. Я хочу сделать это так, как это происходит в 'Skype' .

Что мне нужно, так это предложения о механизме, который я могу применять для получения обновлений статуса присутствия пользователя в реальном времени, так что, как только пользователь обновляет статус, это отражается на моей веб-части. Я знаю, что могу использовать функции setInterval или setTimeout для запроса статуса присутствия через определенные интервалы c, но в целях обучения я не хочу запрашивать API снова и снова, а скорее получать обновленное сообщение с сервера, как это происходит с использованием веб-сокетов . Как с помощью этого API можно применять такие вещи, как веб-сокеты?

Ваши предложения приветствуются.

1 Ответ

1 голос
/ 19 марта 2020

Сегодня этот API не поддерживает какой-либо механизм подписки на изменения статуса. Существует запись uservoice , за которую вы можете проголосовать. Это означает, что единственный способ получить какие-либо изменения - периодически опрашивать их. Что касается сокета io, единственная поддержка сегодня - это списки SharePoint, для любого другого ресурса вам нужно настроить собственную инфраструктуру для передачи сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...