javascript - 从 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 中。我知道我可以使用
setInterval
orsetTimeout
函数在特定时间间隔后请求存在状态,但出于学习目的,我不想一次又一次地以这种方式请求 API,而是使用web sockets从服务器获取更新的消息。如何使用此 API 应用 Web 套接字之类的东西?
欢迎您提出建议。
解决方案
今天,此 API 不支持任何类型的状态更改订阅机制。有一个用户语音条目,您可以为它投票。这意味着获得任何更改的唯一方法是定期轮询它。至于套接字 io,目前唯一的支持是 SharePoint 列表,以及您需要建立自己的基础设施来中继消息的任何其他资源。
推荐阅读
- ivy - 在 Angular 10 错误 NG6003 上激活 Ivy 编译器时出错 - 无法解析为 NgModule
- windows - 我安装了 Neo4j 服务。它们究竟是哪些文件,它们在哪里?
- sql - 从单个日期列分别创建开始和结束日期列
- hotwire-rails - 如何重新加载单个涡轮帧并更新 url?
- python - 如何在多个文件上运行脚本
- python - 将许多列添加到数据框中的最快方法是什么?
- xamarin.forms - 如何在 Azure Devops 中为生成 nuget 包的 Xamarin Forms Android 库项目创建 YAML 管道
- r - ggplot 持续时间对象
- substrate - 夜间和稳定版本中的基板错误
- python - 返回与两个列表不同的第一个元素并停止比较