[英]Is ZeroMQ for Node.js compatible with Electron?
试图让ZMQ Node绑定与Electron一起使用,尤其是在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进行编译,多次重建,使用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提供了针对electronic和node.js的预编译二进制文件。安装zeromq
,针对您使用的电子版本进行重建:
npm rebuild zeromq --runtime=electron --target=1.4.5
感谢zeromq.js团队,并与ZeroMQ一起玩得开心!
将对队列的访问权限放在api层后面可能更安全。 您可能还会在稳定性方面取得更好的成功,电子中的本机模块可能会非常棘手。
但是,我的意思是拥有一个与您的电子应用程序进行通信的REST服务器。 它将向该api发送一条消息,然后该api将消息排队给您的应用程序。 将网络级别的队列访问权限限制为仅api服务器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.