first commit
This commit is contained in:
31
dealer.js
Normal file
31
dealer.js
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
const zmq = require('zeromq');
|
||||||
|
const fs = require('fs');
|
||||||
|
const address = 'tcp://127.0.0.1:12345';
|
||||||
|
let i = 1;
|
||||||
|
const run = async () => {
|
||||||
|
const fileName = "server.json";
|
||||||
|
let keyPair = null;
|
||||||
|
if (fs.existsSync(fileName)) {
|
||||||
|
keyPair = JSON.parse(fs.readFileSync("server.json"));
|
||||||
|
} else {
|
||||||
|
keyPair = zmq.curveKeyPair();
|
||||||
|
fs.writeFileSync("server.json", JSON.stringify(keyPair, null, 4));
|
||||||
|
}
|
||||||
|
var dealer = new zmq.Dealer({
|
||||||
|
curveServer: true,
|
||||||
|
curvePublicKey: keyPair.publicKey,
|
||||||
|
curveSecretKey: keyPair.secretKey,
|
||||||
|
});
|
||||||
|
dealer.connect(address);
|
||||||
|
setInterval(() => {
|
||||||
|
let msg = [[ "weatherinfo", i ]]; // + dealer.identity
|
||||||
|
i += 1;
|
||||||
|
console.log('send', msg);
|
||||||
|
dealer.send(msg);
|
||||||
|
}, 300);
|
||||||
|
console.log("receiving...");
|
||||||
|
for await (const [msg] of dealer) {
|
||||||
|
console.log("received: %s", msg.toString())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
run();
|
||||||
21
package-lock.json
generated
Normal file
21
package-lock.json
generated
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"name": "zeromq-encrypted",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"requires": true,
|
||||||
|
"dependencies": {
|
||||||
|
"node-gyp-build": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-4oiumOLhCDU9Rronz8PZ5S4IvT39H5+JEv/hps9V8s7RSLhsac0TCP78ulnHXOo8X1wdpPiTayGlM1jr4IbnaQ=="
|
||||||
|
},
|
||||||
|
"zeromq": {
|
||||||
|
"version": "6.0.0-beta.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/zeromq/-/zeromq-6.0.0-beta.6.tgz",
|
||||||
|
"integrity": "sha512-wLf6M7pBHijl+BRltUL2VoDpgbQcOZetiX8UzycHL8CcYFxYnRrpoG5fi3UX3+Umavz1lk4/dGaQez8qiDgr/Q==",
|
||||||
|
"requires": {
|
||||||
|
"node-gyp-build": "^4.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
14
package.json
Normal file
14
package.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"name": "zeromq-encrypted",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "dealer.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"zeromq": "^6.0.0-beta.6"
|
||||||
|
}
|
||||||
|
}
|
||||||
32
router.js
Normal file
32
router.js
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
const zmq = require('zeromq');
|
||||||
|
const address = 'tcp://127.0.0.1:12345';
|
||||||
|
const net = require('net');
|
||||||
|
const keyPair = zmq.curveKeyPair();
|
||||||
|
let router = new zmq.Router({
|
||||||
|
curveServer: false,
|
||||||
|
curvePublicKey: keyPair.publicKey,
|
||||||
|
curveSecretKey: keyPair.secretKey,
|
||||||
|
curveServerKey: '&WMz:eOrkJE@OO}5Lm?hcE:L:NZX9mGUGkFMCVyd'
|
||||||
|
});
|
||||||
|
const listen = async () => {
|
||||||
|
for await (const [sender, msg] of router) {
|
||||||
|
console.log("received: %s", Buffer.from(sender).toString('base64'), msg.toString());
|
||||||
|
setTimeout(() => {
|
||||||
|
let n = Math.ceil(Math.random() * 50) - 10;
|
||||||
|
router.send([sender, "hoi12345#"]);
|
||||||
|
}, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const listenForEvents = async () => {
|
||||||
|
for await (event of router.events) {
|
||||||
|
console.log(`${event.type} ${JSON.stringify(event)}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const run = async () => {
|
||||||
|
await router.bind(address);
|
||||||
|
await Promise.all([
|
||||||
|
listen(),
|
||||||
|
listenForEvents()
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
run();
|
||||||
4
server.json
Normal file
4
server.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"publicKey": "&WMz:eOrkJE@OO}5Lm?hcE:L:NZX9mGUGkFMCVyd",
|
||||||
|
"secretKey": "VV8kNZ5HgW^#VT9G/-wPP7?-Jly8}jeYC!mkfYu$"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user