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

我从试图获得与Electron一起工作的ZMQ节点绑定 ,尤其是在Windows上,感到非常头痛。 我正在使用Windows 7和Ubuntu 16.04,他们都有两个单独的问题。

在Windows上,当我尝试require('zmq')时出现错误

 C:\vueelectron\app\node_modules\bindings\bindings.js:91 Uncaught Error: Could not locate the bindings file. Tried: → C:\vueelectron\app\node_modules\zmq\build\zmq.node → C:\vueelectron\app\node_modules\zmq\build\Debug\zmq.node → C:\vueelectron\app\node_modules\zmq\build\Release\zmq.node → C:\vueelectron\app\node_modules\zmq\out\Debug\zmq.node → C:\vueelectron\app\node_modules\zmq\Debug\zmq.node → C:\vueelectron\app\node_modules\zmq\out\Release\zmq.node → C:\vueelectron\app\node_modules\zmq\Release\zmq.node → C:\vueelectron\app\node_modules\zmq\build\default\zmq.node → C:\vueelectron\app\node_modules\zmq\compiled\6.1.0\win32\x64\zmq.node 

我已经尝试编译VS 2013和2015,重build多次,使用electron-rebuild似乎没有任何工作。

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

这是我在我的Electron应用程序的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的工作? 如果是这样,你的发展环境如何? 谢谢。

问题是由Electron和您的节点版本交付的无与伦比的node.js二进制文件。 长的答案是你需要用相同的Node.js头文件来编译Electron和ZeroMQ。 以下是来自Electron社区http://github.com/electron/electron/issues/6805的回应。 现在有一个简短的答案!

使用zeromq代替zmq (相同的API)。 zeromq为OS X,Windows和macOS / OS X提供了用于electron和node.js的预先构build的二进制文件。在安装zeromq ,为您正在使用的电子版本进行重build:

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

感谢zeromq.js团队,并与ZeroMQ玩得开心!

将访问队列放在api层后面可能会更安全。 电子本地模块可能会非常棘手,你也可能会有更好的稳定性。

但是,我的意思是有一个REST服务器,你的电子应用程序通信。 它会发送一个消息给那个API,然后排队消息为您的应用程序。 限制对networking级队列的访问仅限于api服务器。