让我试一试;-)
一般步骤是什么?
正如 Evert 所提到的,您需要实现一个 CalDAV 服务器。根据您要支持的功能,这很重要,需要了解相关规范(iCalendar RFC 5545 和 CalDAV 4791、WebDAV RFC 4918)。
实施 CalDAV 服务器的一般步骤是什么?您需要 HTTP 入口点来:
a) 提供帐户信息(在 WebDAV 中称为主体),这包括帐户日历在哪个 URL 下生效
b)提供日历列表(称为日历主页,来自a)的主要信息指向此)
c) 服务于实际的日历,即包含在这些日历中的事件。CalDAV 日历是“iCalendar”资源的特殊 WebDAV 集合。iCalendar 是表示事件的格式。
根据您想要支持的 CalDAV 功能,这可能会更加复杂(例如服务器端调度)。对更快的同步(同步报告)或上传等进行了优化。您不需要所有这些都可以开始。
我需要提供一个 servlet 吗?如果是,那么我必须返回什么请求?JSON 或 XML 或 .ics 文件?
正如 Evert 所说,如何实现 HTTP 端点是您的选择。Servlet 是一种可行的选择。主要信息、日历列表和日历中项目的 URL 以 (WebDAV) XML(多状态响应)形式返回。事件的实际内容需要以 iCalendar (.ics) 格式返回。
当用户订阅我的日历时,这是否意味着他的客户端将在一段时间后拉动我的服务器(调用 servlet)。
是的。
Some CalDAV implementations also support Push (where the server can tell the client when new data is available), but that's not yet standardized and implementations vary a lot.
The polling can be kept fast if your server implements CTags and sync-reports (RFC 6578).