【问题标题】:Using CometD to constantly watch a file for changes使用 CometD 持续观察文件的变化
【发布时间】:2023-04-01 16:57:01
【问题描述】:

我正在创建一个应用程序,told 认为最好使用 Comet 来满足我的需求。到目前为止,我还没有使用 Comet 的经验,但经过一些研究,我已经建立了一个 CometD 服务器。其他可用的服务器包括 APE,但距离上一次修订似乎已经有一段时间了,而且 CometD 的文档要好得多。

由于我缺乏经验,我真的不知道从哪里开始,而且文档没有涵盖如此具体的案例。

我希望服务器持续监视 .txt 文件的更改,并在 HTML 页面中显示该文档的当前内容。该文件会定期更改(大约每 2 或 3 分钟一次),我希望在更改发生时将新文档显示给连接的客户端。

我认为它是可行的,我想它可以通过修改 JS 来完成。我唯一的问题是……我该如何开始?

【问题讨论】:

    标签: javascript comet cometd


    【解决方案1】:

    您可以使用 JDK 7 的文件监视服务来监视文件更改,如 official tutorial 中所述。

    一旦您检测到更改,您可以在频道上广播 CometD 消息,JavaScript 客户端可以在该频道上侦听消息。请参阅http://docs.cometd.org 的第 3.3.5.5 节。

    您可以选择发送整个文件或增量,具体取决于您的应用程序逻辑。

    总而言之,您需要在服务器端有一些逻辑来监视文件更改,并在客户端有一些逻辑来接收文件更改并显示它们。

    【讨论】:

    • 感谢您的回答。如果不是让服务器需要监视文件更改,而是可以告诉服务器文件刚刚更新,该怎么办。例如,我正在使用 PHP 中的函数更新文件。在该功能中,我可以“轻推”服务器以读取新文件并将新版本推送给客户端。这可行吗?
    • 是的,这是可行的。我知道有人通过使用 CURL 对特定 URL 执行请求来“通知” CometD 服务器(最后也是 HTTP 服务器)。映射到该 URL 的 servlet 可以触发读取文件并执行 CometD 推送的逻辑。但任何事情都会起作用:JMS 通知、HTTP 请求、文件监视等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多