簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM