ZeroMQ for Node.js是否与Electron兼容

Is ZeroMQ for Node.js compatible with Electron?

本文关键字:Electron 兼容 是否 js for Node ZeroMQ      更新时间:2023-09-26

我非常头疼,因为我试图让ZMQ节点绑定与Electron一起工作,尤其是在Windows上。我正在使用Windows7和Ubuntu16.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版本提供的node.js二进制文件不匹配。长话短说,您需要使用相同的Node.js头编译Electron和ZeroMQ。以下是Electron社区的回应http://github.com/electron/electron/issues/6805.不过现在有一个简短的答案!

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

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

感谢zeromq.js团队,使用zeromq玩得开心!

将对队列的访问放在api层后面可能更安全。你可能会在稳定性方面取得更好的成功,电子中的原生模块可能非常棘手。

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