我有什么办法可以将nodejs应用程序作为服务器运行,并与已部署的电子应用程序通信?

时间:2019-02-18 12:32:16

标签: node.js electron

我最近使用电子程序创建了一个客户端应用程序,该程序当前独立运行。我希望它具有一些功能,可以将字符串发送到所有电子应用程序,这可能是通过创建一个nodejs服务器来完成的。然后,电子应用程序将接收此字符串并在我附加的任何功能中使用它。

这不是电子前端与后端通信。这是与电子后端通信的外部nodejs服务器。因此它将是作为服务器运行的1个主要nodejs应用程序,以及在不同机器上部署的电子应用程序。

这实际上有可能实现吗?

是否有任何节点软件包可以允许从主服务器到电子应用程序的这种通信?任何记录在案的软件包都会有很大的帮助,因此在集成之前,我可以了解它的功能。

我看到了socket-io,但是除非我解释错误,否则它似乎更多是基于Web的客户端服务器?

感谢您的帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

希望我能正确理解您的问题。

每个Electron安装都可以在其主进程或渲染器进程中运行Web服务器。

Electron安装需要将其当前IP地址传送到“主”节点服务器,以方便从“根”服务器节点对其进行回调。

然后,主服务器节点将回调到每个当前的Electron实例,并将最新的字符串值通知它们。

如果在开放的Internet上执行此操作,则会遇到网络代理/防火墙/安全性相关问题。您需要确定要执行的操作/原因。它只能在某些有限的情况下工作。

更实用的替代方法是从每个Electron实例例行“轮询”主服务器并获取最新的字符串值。

您可以考虑使用其他方法,例如Web套接字,消息队列,响应技术,某些移动/桌面平台上的“通知” API或对等协议?

根据您的应用程序,这些解决方案可能更容易或更合适。例如。您是否正在实现“聊天”应用程序,是否在流式传输音频和视频等?

有趣的问题!

答案 1 :(得分:0)

是的。太简单了,我要与大家分享我的经验。 只需创建node.js的server.js文件,并使用正确的路径在电子生成文件的index.js中调用该文件即可。

//server.js

const express = require('express');

const app = express();

const cors = require('cors');
var bodyParser = require('body-parser');

app.use(cors());

app.listen(8880, function () {
    console.log("Listen to Port 8880!");
});

在索引js中调用您的节点服务器文件

//index.js

const { app, BrowserWindow, Menu } = require('electron');

const express = require('./server.js'); <--- calling your node js

现在只需要执行电子命令即可。是的!无论您提供什么,它都能正常工作,您的节点服务器也可以在PORT上运行。 通过这种方式,您可以在node中创建REST API并在ELECTRONJS中利用它。 希望你能得到答案。