首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >开发CalDav服务器

开发CalDav服务器
EN

Stack Overflow用户
提问于 2013-02-16 20:57:34
回答 2查看 6.8K关注 0票数 18

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

  1. 一般步骤是什么?
  2. 我需要提供servlet吗?如果是,那么对于请求,我必须返回什么?
  3. 当用户订阅我的日历时,这是否意味着他的客户端将在一段时间后拉出我的服务器(调用servlet)。

自从我第一次问这个问题已经有一年了,但我得到了相当多的支持,所以我不得不提供一些信息:我最终使用了弥尔顿库http://milton.io/,它抽象了servlet,你只需要编写函数来返回数据。这个库的作者非常乐于助人,内容也很丰富。最终结果:我们的caldav服务器工作正常。

我也接受Evert的回答。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-12 22:36:42

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

不只是一次,你至少要从上到下读4次。

更重要的是,您可能还应该阅读WebDAV、WebDAV ACL和iCalendar的RFC。

你在这里得到的任何答案都是重复里面的内容,试图简化它是徒劳的,因为你真的需要对大部分规范有一个完整的理解。

具体回答你的问题:

  1. 完全太含糊了,无法回答。一般的步骤需要理解规范,并编写服务器。具体来说,encouraged.
  2. You需要能够响应超文本传输协议请求的东西。无论是servlet还是其他东西都不那么重要。CalDAV是超文本传输协议的扩展。返回XML报告以获取元信息,而iCalendar是实际日历数据的默认格式。对于许多http请求,iCalendar都包装在XML体中。如今,服务器也开始支持xCal和jCal。后两者是可选的,您必须具有support.
  3. Usually,iCalendar,它们将以客户端定义的时间间隔进行轮询。虽然有发布-订阅机制,但目前还没有针对它们的标准,而且有各种实现。已经开始讨论这方面的标准传输,但这可能需要一些时间才能完成。(年)
票数 4
EN

Stack Overflow用户

发布于 2014-02-27 09:33:24

让我试一试;-)

一般的步骤是什么?

正如Evert所提到的,你需要实现一个CalDAV服务器。根据您想要支持的特性,这不是一件容易的事情,需要了解相关的规范(iCalendar RFC5545和CalDAV 4791,WebDAV RFC4918)。

实施CalDAV服务器的一般步骤是什么?您需要HTTP入口点来:

a)提供帐户信息(在WebDAV中称为委托人),这包括帐户的日历在哪个网址下

b)将日历列表(称为日历主页,来自a的主要信息)指向此列表)

c)服务于实际的日历,也就是那些日历中包含的事件。CalDAV日历是'iCalendar‘资源的特殊WebDAV集合。iCalendar是表示事件的格式。

根据你想支持的CalDAV特性,这可能会更加复杂(例如,服务器端调度)。有优化的更快的同步(同步报告),或上传,等等。你不需要所有这些都开始。

我需要提供servlet吗?如果是,那么对于请求,我必须返回什么?是JSON、XML还是.ics文件?

正如Evert所说,如何实现HTTP端点是您的选择。Servlet是一种可行的选择。主体信息、日历列表和日历中项目的URL在(WebDAV) XML (多状态响应)中返回。事件的实际内容需要以iCalendar (.ics)格式返回。

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

是。

一些CalDAV实现也支持推送(服务器可以告诉客户端何时有新数据可用),但这还没有标准化,实现也有很大不同。如果您的服务器实现了CTags和同步报告(RFC6578),那么轮询可以保持很快。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14910553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档