桌面应用程序和Web前端之间的通信

时间:2015-04-24 12:36:10

标签: html5 architecture go websocket

我的项目可以分为3个组件:桌面应用程序,服务器后端,服务器前端。我正在使用websockets应用程序后端和后端前端通信。前端是单页面应用程序。整体看起来像这样:

application-backend and backend-frontend communication

我需要实现前端和应用程序之间的通信(上图中的虚线箭头)。我可以使用后端服务器作为代理,但是在前端和应用程序之间进行直接通信会更有用,这样就不会浪费后端资源。

有什么方法可以在本地应用和网络前端之间建立直接连接吗?

PS:我使用Go作为后端和应用程序,使用JavaScript作为前端和WebSockets进行通信,但欢迎使用常规体系结构答案。

2 个答案:

答案 0 :(得分:3)

您是否尝试从桌面应用程序连接到JavaScript前端?如果是这样,我可以考虑以下选项

  1. 的WebRTC。它得到了Chrome(和Opera)和Firefox的支持。
  2. Chrome Native Messaging,这仅适用于chrome,可以从stdin /桌面应用程序发送/接收信息。
  3. 总的来说,我认为WebRTC可能是更好的解决方案。这两种解决方案都要求您在现代浏览器中运行Web前端,Chrome / Firefox。

    如果您必须处理IE,我只能考虑让您的桌面应用程序运行本地Web服务器,并让您的Web应用程序轮询/发布到它。即使这样,你也必须解决跨域问题,并且你可能希望围绕它实现一定程度的安全性,因此它会变得非常混乱。

答案 1 :(得分:1)

这可能有用,但可能需要花费一些额外的时间来安全地做到:

让您的桌面程序在某个任意端口 p 上运行Web(套接字)服务器,然后尝试与您的前端的localhost: p 进行通信。

或者您可以尝试在浏览器和桌面应用之间进行WebRTC。快速搜索出现了https://github.com/coreos/go-webrtc-datachannel,这只是一个计划文档。