【问题标题】:Developing a CalDav server开发 CalDav 服务器
【发布时间】:2013-02-01 08:43:48
【问题描述】:

我的数据库中保存了一组事件(一个非常特殊的数据库,所以我不能使用一些流行的开源服务器,比如 MySQL)。现在我想构建一个 CalDav 服务器(通过 Java),以便用户可以将他的日历客户端连接到它以检索或修改事件。我是新手,所以有很多问题,希望大家帮助我。

  1. 一般步骤是什么?

  2. 我需要提供一个 servlet 吗?如果是,那么我必须返回什么请求? JSON 或 XML 或 .ics 文件?

  3. 当用户订阅我的日历时,这是否意味着他的客户端会在一段时间后拉取我的服务器(调用 servlet)。

更新:这是我第一次提出问题以来已有 1 年历史的问题,但我得到了相当多的支持,所以我有义务提供一些信息:我最终使用了 Milton 库 http://milton.io/,它抽象了 servlet,您只需要编写函数来返回数据。该库的作者非常乐于助人且内容丰富。最终结果:我们的 caldav 服务器已经工作了。

我也接受 Evert 的回答。

【问题讨论】:

  • 您好 - 您还在使用 milton.io 吗?进展如何?

标签: java icalendar caldav


【解决方案1】:

让我试一试;-)

一般步骤是什么?

正如 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 实现还支持推送(当有新数据可用时,服务器可以通知客户端),但是这还没有标准化并且实现有很大差异。 如果您的服务器实现 CTag 和同步报告 (RFC 6578),则可以保持快速轮询。

【讨论】:

    【解决方案2】:

    阅读 RFC: https://www.rfc-editor.org/rfc/rfc4791

    不只是一次,您至少要从头到尾阅读 4 次。

    除此之外,您可能还应该阅读有关 WebDAV、WebDAV ACL 和 iCalendar 的 RFC。

    您在这里得到的任何答案都是对其中内容的重复,试图简化这一点是徒劳的,因为您确实需要全面了解大部分规范。

    具体回答您的问题:

    1. 完全含糊不清,无法回答。一般步骤需要理解规范并编写服务器。鼓励具体说明。
    2. 您需要能够响应 HTTP 请求的东西。无论是 servlet 还是其他东西都不太重要。 CalDAV 是 HTTP 的扩展。为元信息返回 XML 报告,iCalendar 是实际日历数据的默认格式。对于许多 http 请求,iCalendar 包装在 xml 正文中。这些天来,服务器也开始支持 xCal 和 jCal。后两者是可选的,您必须支持 iCalendar。
    3. 通常,它们会按客户端定义的时间间隔进行轮询。有 pub-sub 机制,但目前它们没有标准,并且有各种实现。讨论已经开始为此提出标准传输,但这可能需要一些时间才能完成。 (年)

    【讨论】:

    • 这道题有3分。您的“答案”没有为其中任何一个提供答案。
    • 我的回答提供了对提供所有答案的官方文档的参考。实现了流行的 CalDAV 服务器后,如果不阅读文档,绝对无法开始使用。
    • 我同意你的观点,但我不同意这篇文章回答了所要求的 3 点,这可能无需阅读整个文档即可回答。这更像是关于 SO 格式的元讨论,而不是你刚才所说的真相。
    • 很公平。这个问题有点老了,但我会尽量为未来的访客回答这些问题。
    猜你喜欢
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多