让我试试;-)
一般步骤是什么?
正如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)。
是的。
一些CalDAV实现还支持Push(其中服务器可以告诉客户端何时有新数据可用),但这尚未标准化,并且实现差异很大。如果您的服务器实现了CTags和sync-reports(RFC 6578),则轮询可以保持快速。