【问题标题】:DesktopApp communicates with WebApp桌面应用程序与 Web 应用程序通信
【发布时间】:2009-09-23 12:27:35
【问题描述】:
我有一个桌面应用程序和一个浏览器,在我的计算机上运行了一个已启动的 Web 应用程序。如果我在桌面应用程序中选择某些内容,我想让 Web 应用程序执行一些 JavaScript。
我现在的问题是,是否有可能在此“应用程序”之间直接通信,或者是通知网络应用服务器的唯一方法,并且网络应用程序在此更改后使用 ajax 或其他方式进行轮询?
您是否有一些要阅读的链接或一些可用于 Google 的关键字?
提前谢谢
【问题讨论】:
标签:
web-applications
communication
desktop-application
【解决方案1】:
网络应用可以通过普通的旧 HTTP 轻松访问桌面应用。将原始 HTTP 服务器放入您的桌面应用程序,让它侦听某个高端口,让 Web 应用程序向 localhost:thatport 发出 AJAX 样式的 HTTP 查询(我提到过 jQuery 吗?)。
但您希望信息反过来 - 桌面到网络。不要绝望,有一种叫做轮询的东西。 Web 应用程序发出请求。桌面应用程序中的 HTTP 服务器捕获它,并且在一些合理的超时(例如 10 秒)内没有响应。如果在此期间桌面应用程序中发生了事件,您会立即使用事件数据进行响应。如果没有,一旦超时到期,您将使用“继续等待”的代码进行响应,并且 Web 应用程序会重新发出请求。如果需要传递的事件发生在 HTTP 请求之间,它会排队等待下一个请求到来。
AJAX 是异步的,因此启用此技术 - 待处理的 HTTP 请求不会干扰浏览器的正常功能。
【解决方案2】:
您的浏览器不是网络服务器,因此必须启动所有网络通信。
我猜你的桌面应用程序只是一个 Web 客户端,而不是一个 Web 服务器。因此它必须启动所有的网络通信。
您的 Web 应用程序是一个 Web 服务器,因此不必启动通信。对于浏览器或桌面应用程序,它无法启动通信,因为它们都不是 Web 服务器。
因此,如果您希望桌面应用程序与 Web 浏览器进行通信,则必须使用 Web 应用程序作为中介,并且 Web 应用程序必须存储浏览器和桌面应用程序之间共享的任何消息,以及通信必须轮询 Web 服务器以获取任何新的共享数据。