我正在尝试将共享日历创建为 Web 应用程序。当有人在日历上添加事件时,我希望共享该日历的每个人也能看到该事件。当有人创建事件时,我制作了一个将数据发送到数据库的 ajax。有没有办法将事件从服务器发送到页面上在线并共享同一日历的其他客户端?我现在通过不断“刷新”数据库中的信息来做到这一点。如果有人知道如何做到这一点,请告诉我。
1 回答
希望网络服务器将信息“推送”回浏览器是一个由来已久的问题。处理这个问题的传统方法是让任何活跃的客户端(即人们仍然登录到您的应用程序并打开页面)定期“轮询”服务器以查看是否有任何新信息。在您的情况下,您可以让页面上的一些 JS 每 10 秒进行一次 AJAX 调用,以查看他们是否有任何应该注意的新日历事件。This does increase the overall traffic to your web server so pick your polling time appropriately - otherwise you'll cripple your web server because it will spend all of its time handling these "is there anything new?" 大多数时候没有请求。
如果你想更前沿一点,你可以看看 HTML5 websockets。谷歌搜索“html5 websockets 教程”应该会给你很多资源。它们使用起来有点棘手,并且要求您运行支持它们的 Web 服务器(您可能是)。对于支持它的浏览器,您可以保持更长期的开放连接,然后您可以将数据从 Web 服务器推送回浏览器,并且您的 JS 将使用更新的信息捕获“onmessage”事件。将您指向 google 并不是试图摆脱更完整的答案,但是已经有许多优秀的教程在那里寻找 HTML websockets,您应该能够完成您想要做的事情。