首页 > 解决方案 > 从 Microsoft Graph API(测试版)通信 API 获取实时更新

问题描述

我目前正在使用 Microsoft Graph API(测试版)在使用 GraphClient 的 spfx webpart(使用 React)中获取在线状态、离开等状态:

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;
});

这工作正常,但要获取用户的更新状态,我必须刷新页面,以便进行另一个 API 调用并更新存在状态。我想这样做,就像在'Skype'中发生的那样。

我需要的是关于一种机制的建议,我可以应用该机制来获取用户存在状态的实时更新,因此一旦用户更新状态,这就会反映在我的 webpart 中。我知道我可以使用 setIntervalorsetTimeout函数在特定时间间隔后请求存在状态,但出于学习目的,我不想一次又一次地以这种方式请求 API,而是使用web sockets从服务器获取更新的消息。如何使用此 API 应用 Web 套接字之类的东西?

欢迎您提出建议。

标签: javascriptreactjssharepointwebsocketmicrosoft-graph-api

解决方案


今天,此 API 不支持任何类型的状态更改订阅机制。有一个用户语音条目,您可以为它投票。这意味着获得任何更改的唯一方法是定期轮询它。至于套接字 io,目前唯一的支持是 SharePoint 列表,以及您需要建立自己的基础设施来中继消息的任何其他资源。


推荐阅读