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