【问题标题】:How can I send information from a web server to an Electron app?如何将信息从 Web 服务器发送到 Electron 应用程序?
【发布时间】:2016-05-06 17:41:23
【问题描述】:

我正在构建一个电子,当在通过 oAuth2 连接的某个服务中填写某个表单时,它本质上会提供“通知”。

但是,我很难找到有关(我认为)需要进行的流程的任何信息。

我在想……

用户从该网络服务提交表单 A

该 Web 服务可以(不确定这是否可行)向我的服务器发送 HTTP 帖子

然后我想我的服务器可以将该信息发送到电子应用程序。我已经查看了“https://www.npmjs.com/package/electron-workers”,但我仍然不清楚这是否有助于解决我的问题。

我们将不胜感激任何帮助,甚至是朝着正确方向的推动!

【问题讨论】:

  • 反其道而行之不是更容易吗?让应用程序连接到服务器并请求数据,或者连接到 Web 服务器并提供诸如 websocket 之类的通信通道。
  • 服务器不能向浏览器(电子)发送数据,只能返回数据。所以浏览器必须做两件事之一。每隔几秒钟轮询一次服务器以检查更新。或使用 websocket。
  • 这是有道理的。我已成功拨打电话,设置了 oAuth2 以及一切。基本上,我想要“接近实时”的通知,但似乎每隔几秒钟轮询一次服务器非常密集。我会更多地研究 websockets;以前从来没有真正搞砸过他们。谢谢!
  • Socket.io 是一个很棒的库,可以帮助您处理实时方面的问题socket.io

标签: javascript node.js electron


【解决方案1】:

您有多种方法可以做到这一点,但这只能通过 Electron 的渲染器进程(基本上是您的前端)简单地完成,

使用网络套接字进行实时应用

Web 套接字是一种实现服务器和客户端之间实时通信的技术。最著名的是socket.io。你也可以看看Web Sockets API

设置向您的服务器执行 Ajax 请求的时间间隔

var checkNotifications = function() {

    var r = new XMLHttpRequest();

    r.open("POST", "url/of/your/notifications", true);

    r.onreadystatechange = function () {
        if (r.readyState != 4 || r.status != 200) return;
            alert("Success: " + r.responseText);
        };

    r.send();
}


setInterval(checkNotifications, 5000); // every 5 seconds

【讨论】:

  • 我还与我的一些同事讨论了这个挑战,并得出结论认为 socket.io 是要走的路。然后我的想法变得更加狡猾,因为我只想向某个人发送通知,而不是每个客户端都在监听我的套接字。我肯定已经用这个想法打开了一罐蠕虫。
  • 我认为您误解了套接字的原理:套接字是特定于客户端的:它取决于您的后端/服务器应用程序,但您完全可以向一个特定的客户端发送通知(它适用于)。一个套接字 = 服务器和客户端之间的一个链接,两个套接字 = 服务器和客户端之间的两个不同且独立的链接。
【解决方案2】:

Electron 正在运行本地节点 http 服务器,但它不是公共地址。 Max Ogden 提到过——我认为在“电子状态”youtube 谈话中——在公共网络服务器上安装一个“无头”电子应用程序来做一些与服务相关的事情,但基本上你必须有一个可访问的地址。你想让桌面网络服务器有一个公共 URL 吗?

【讨论】:

  • 在与我的一些同事讨论了我的挑战后,我认为通过 socket.io 的 Web 套接字是我案例的最佳途径
猜你喜欢
  • 1970-01-01
  • 2020-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
  • 2013-06-19
  • 2019-01-16
相关资源
最近更新 更多