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