Javascript ZeroMQ for Node.js是否与Electron兼容?

Javascript ZeroMQ for Node.js是否与Electron兼容?,javascript,node.js,zeromq,electron,Javascript,Node.js,Zeromq,Electron,我有一个巨大的头痛,因为试图获得与电子工作,特别是在Windows上。我正在使用Windows7和Ubuntu 16.04,它们都有两个不同的问题 在Windows上,我尝试执行require('zmq') 我试过用VS 2013和2015进行编译,多次重建,使用了electron-rebuild似乎没有任何效果 在Linux上,它可以正常加载,但问题是当我发送一条消息时,它似乎在某个地方陷入了一个循环中,它不断发送数百条消息,并且无限期地继续这样做。通过将Ubuntu存储库中的ZMQ版本升级到

我有一个巨大的头痛,因为试图获得与电子工作,特别是在Windows上。我正在使用Windows7和Ubuntu 16.04,它们都有两个不同的问题

在Windows上,我尝试执行
require('zmq')

我试过用VS 2013和2015进行编译,多次重建,使用了
electron-rebuild
似乎没有任何效果

在Linux上,它可以正常加载,但问题是当我发送一条消息时,它似乎在某个地方陷入了一个循环中,它不断发送数百条消息,并且无限期地继续这样做。通过将Ubuntu存储库中的ZMQ版本升级到从ZeroMQ网站下载的最新版本,解决了这一问题

这是我在我的电子应用程序的
index.html
文件中使用的代码

const electron = require('electron')
const zmq = require('zmq')

const socket = zmq.socket('req')
socket.connect('tcp://10.10.0.51:3111')

socket.on('message', function (data) {
  console.log(socket.identity + ': answer data ' + data)
})

socket.send('test')

还有其他人能让Electron+ZMQ工作吗?如果是,你的发展环境是什么样的?谢谢。

将对队列的访问置于api层之后可能更安全。你们可能在稳定性方面也有更好的成功,电子中的本机模块可能非常棘手


但我的意思是有一个REST服务器,您的电子应用程序可以与之通信。它将向该api发送一条消息,然后api将为您的应用程序对消息进行排队。在网络级别将对队列的访问限制为仅api服务器。

问题在于Electron提供的node.js二进制文件与您的node版本不匹配。答案很长,您需要使用相同的Node.js头编译Electron和ZeroMQ。这是电子界的反应。现在有一个简短的答案

代替
zmq
(相同的API)使用。为操作系统X、Windows和macOS/OS X的electron和node.js提供预构建的二进制文件。安装
zeromq
后,为您正在使用的electron版本重建:

npm rebuild zeromq --runtime=electron --target=1.4.5

感谢zeromq.js团队,享受zeromq带来的乐趣

谢谢你的回复,我实际上是从那个场景中来的。但我们正试图将延迟控制在最低限度,我们尝试的所有HTTP服务器都至少增加了30毫秒左右。这也是我想避免的额外的复杂性。奇怪的是让它在Linux和Mac上工作是多么容易。我很欣赏这个想法。但是如何使api层透明呢?例如,我有一个纯node.js应用程序,其中包含大量zmq代码。现在我必须为Electron应用程序添加一个api层。我不想对现有代码做太多更改,只想用
require(“zmq”)
替换所有
require(“zmq桥”)
。我要检查每一个方法,并逐一进行映射吗?我的答案中添加了详细说明,请检查。感谢回复,链接已关闭。我可以通过使用electron builder解决我的问题,我不确定它有什么不同,但它现在可以正常工作。我们又做了一步,让您更容易——(重命名为zeromq.js,npm上的zeromq)现在为electron发行版提供预构建的二进制文件:
npm rebuild zeromq --runtime=electron --target=1.4.5