在服务器事件上向客户端发送信息

时间:2012-04-27 21:51:27

标签: ajax client send

我正在尝试将共享日历创建为网络应用。当有人在日历上添加活动时,我希望每个共享该日历的人都能看到该活动。当有人创建事件时,我创建了一个将数据发送到数据库的ajax。有没有办法将事件从服务器发送到页面上在线并共享同一日历的其他客户端?我现在通过不断“刷新”数据库中的信息来做到这一点。 如果有人知道如何做到这一点,请告诉我。

1 个答案:

答案 0 :(得分:2)

希望网络服务器将信息“推送”回浏览器是一个时间问题。处理此问题的传统方法是让任何活动的客户端(即人们仍然以打开的页面登录到您的应用程序)定期“轮询”服务器,以查看是否有任何新信息。在您的情况下,您可以在页面上有一些JS每隔10秒进行一次AJAX调用,看看他们是否有任何他们应该知道的新日历事件。这确实增加了您的Web服务器的总体流量,因此适当地选择您的轮询时间 - 否则您将削弱您的Web服务器,因为它将花费所有时间处理这些“有什么新的吗?”大部分时间都没有请求。

如果您想要更加前沿,可以查看HTML5 websockets。谷歌搜索“html5 websockets教程”应该会给你足够的资源。它们使用起来有点棘手,并要求您运行支持它们的Web服务器(您可能正在使用它)。对于支持它的浏览器,您可以维护一个更长期的开放连接,然后您可以将数据从Web服务器推送回浏览器,您的JS将使用更新的信息捕获“onmessage”事件。指向谷歌并不是试图从更完整的答案中解脱出来,但已经有很多优秀的教程,所以寻找HTML websockets,你应该能够实现你想做的事。