first commit

This commit is contained in:
2020-01-07 22:32:17 +01:00
commit 2b9fbb2431
5 changed files with 102 additions and 0 deletions

31
dealer.js Normal file
View 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
View 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
View 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
View 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
View File

@@ -0,0 +1,4 @@
{
"publicKey": "&WMz:eOrkJE@OO}5Lm?hcE:L:NZX9mGUGkFMCVyd",
"secretKey": "VV8kNZ5HgW^#VT9G/-wPP7?-Jly8}jeYC!mkfYu$"
}