EWS收不到office365的推送通知

EWS can not receive push notification from office365

我正在使用 EWS api 在平板电脑上开发一个与 office365 连接的 androd 应用程序。应用程序轮询 office365 服务器以请求日历信息。但是,当应用程序安装在 15 台设备上并且每台设备以 5 秒的间隔轮询时,有时会受到节流策略的限制。服务器 returns 消息说它正忙。

EWS 提供流式订阅和推送订阅。流媒体订阅不是我想要的,因为它只允许 10 个连接同时工作(根据 .https://msdn.microsoft.com/EN-US/library/office/dn458789(v=exchg.150).aspx) 所以推送通知是更好的选择。

当我尝试使用推送通知时,我们的应用程序能够订阅 office365 上的日历。服务器回复订阅成功。 然后,该应用程序创建了一个套接字并侦听来自 office365 的数据。但是,当我们创建、修改日历上的事件时,不会将数据从 office365 推送到我们的应用程序。

我们在本地网络中尝试了使用 Exchange2010 Sp2 的方案,效果很好。因此,我们假设这是因为网络问题或网络策略。我们尝试重新配置路由器以允许端口转发并关闭防火墙。还是不行。

所以问题很简单如何正确实现 "office365" 的推送通知接收器。

来自 O365 的推送通知不太可能起作用。即使您确实将防火墙端口打开到您建立的侦听端口,仍然存在您向 O365 提供通知的 URL 的可路由性问题。例如。如果你给它“http://myserver:11111/pushhere”,它可能无法解析 "myserver",除非你有一个 public DNS 条目。即便如此,让端口对网络开放可能不是一个好主意——至少在我的公司,IT 人员永远不会让我这样做!

关于流媒体订阅的 10 个连接限制,可以使用模拟来解决。事实上,对于 O365 模拟几乎是强制性的,IMO,以避免 O365 作为 SaaS 必须做的节流。这确实需要使用 PowerShell 进行一些设置才能涵盖您需要订阅的所有 MB,但这是一次性的事情。

也就是说,流式通知比旧的 PUSH 管理起来更复杂。特别是对于 O365,您必须了解通过自动发现获得的分组信息,并在每个连接上仅订阅同一组中的 MB。此外,您每个订阅的最大 200 MB 硬性规定可能会或可能不会成为您的一个因素。您在上面引用的文章详细介绍了很多内容。

祝你好运!