开发CalDav服务器

Tax*_*Noi 16 java icalendar caldav

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

  1. 一般步骤是什么?

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

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

更新:这是一个1岁的问题,因为我第一次问,但我得到了一些赞成,所以我不得不提供一些信息:我最终使用了Milton库http://milton.io/,它抽象了servlet ,你只需编写函数来返回数据.图书馆的作者非常有帮助和信息丰富.最终结果:我们的caldav服务器已经运行.

我也接受埃弗特的回答.

hnh*_*hnh 6

让我试一试;-)

一般步骤是什么?

如Evert所述,您需要实现CalDAV服务器.根据您要支持什么功能,这是不平凡的,并要求相关规范(RFC的iCalendar和5545的CalDAV 4791,RFC的WebDAV 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(服务器可以在新数据可用时告诉客户端),但是这还没有标准化,并且实现方式也有很大差异.如果您的服务器实现CTag和同步报告(RFC 6578),则可以快速保持轮询.


Eve*_*ert 5

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

不只是一遍,至少要从头到尾读四遍。

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

您在这里得到的任何答案都将是对其中内容的重复,并且尝试简化它是相当徒劳的,因为您确实需要充分理解大部分规范。

具体回答你的问题:

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

  • 这道题有3点。您的“答案”没有为其中任何一个提供答案。 (3认同)