|
| 1 | +const fs = require("fs"); |
| 2 | +const jwt = require("jsonwebtoken"); |
| 3 | +const JSONbig = require('json-bigint'); |
| 4 | + |
| 5 | +// NOTE: Run pip install socket.io-client. |
| 6 | +const io = require('socket.io-client'); |
| 7 | +const url = "http://localhost:5060"; |
| 8 | +const socket = io(url, { |
| 9 | + //transports: [ 'websocket', 'polling'] |
| 10 | +}); |
| 11 | + |
| 12 | +const crtPath = "3PfTJw8g.crt"; |
| 13 | +const paramAlgorithm = "ES256"; |
| 14 | + |
| 15 | +socket.on('connect', () => { |
| 16 | + console.log('connect'); |
| 17 | + console.log(socket.id); |
| 18 | + const transport = socket.io.engine.transport.name; |
| 19 | + console.log(transport); |
| 20 | + //socket.emit('mymessage', 'hoge'); |
| 21 | +}); |
| 22 | + |
| 23 | +socket.on('mymessage', () => { |
| 24 | + console.log('received mymessage'); |
| 25 | +}); |
| 26 | + |
| 27 | +socket.on("response", (result) => { |
| 28 | + console.log(`#[recv]response, res: ${result}`); |
| 29 | + responseFlag = true; |
| 30 | + decodeFunc(result.resObj.data); |
| 31 | +}); |
| 32 | + |
| 33 | +socket.on("eventReceived", (result) => { |
| 34 | + console.log(`#[recv]eventReceived, res: ${result}`); |
| 35 | + responseFlag = true; |
| 36 | + console.log(`#[recv]eventReceived, res_status: ${result.status}`) |
| 37 | + decodeFunc(result.blockData); |
| 38 | +}); |
| 39 | + |
| 40 | +const verify = (signature) => new Promise(resolve => { |
| 41 | + const publicKey = fs.readFileSync(crtPath); |
| 42 | + |
| 43 | + const option = { |
| 44 | + algorithms: paramAlgorithm, |
| 45 | + }; |
| 46 | + |
| 47 | + jwt.verify(signature, publicKey, option, (err, decoded) => { |
| 48 | + return new Promise((resolve, reject) => { |
| 49 | + if (err) { |
| 50 | + // Authentication NG |
| 51 | + console.log(`Authentication NG : error = ${err}`); |
| 52 | + reject(err); |
| 53 | + } else { |
| 54 | + // Authentication OK |
| 55 | + console.log(`Authentication OK`); |
| 56 | + console.log(`decoded : ${JSON.stringify(decoded)}`); |
| 57 | + |
| 58 | + resolve(decoded); |
| 59 | + } |
| 60 | + }); |
| 61 | + }); |
| 62 | +}); |
| 63 | + |
| 64 | +const decodeFunc = async (signsignature) => { |
| 65 | + try { |
| 66 | + console.log("call verify()"); |
| 67 | + console.log(`##signsignature: ${signsignature}`); |
| 68 | + const decoded = await verify(signsignature); |
| 69 | + console.log(`##decoded: ${decoded}`); |
| 70 | + |
| 71 | + } catch (err) { |
| 72 | + console.log(`err: ${err}`); |
| 73 | + } |
| 74 | +}; |
| 75 | + |
| 76 | +const requestStartMonitor = () => { |
| 77 | + console.log('##exec requestStartMonitor()'); |
| 78 | + socket.emit('startMonitor'); |
| 79 | + |
| 80 | + setTimeout(requestStopMonitor,180000); |
| 81 | +} |
| 82 | + |
| 83 | +const requestStopMonitor = () => { |
| 84 | + console.log('##exec requestStopMonitor()'); |
| 85 | + socket.emit('stopMonitor'); |
| 86 | + |
| 87 | + setTimeout(function(){ |
| 88 | + // end communication |
| 89 | + socket.disconnect(); |
| 90 | + process.exit(0); |
| 91 | + },5000); |
| 92 | +} |
| 93 | + |
| 94 | +setTimeout(requestStartMonitor, 2000); |
| 95 | + |
| 96 | +socket.emit('test-event'); |
| 97 | + |
| 98 | +setTimeout(() => { |
| 99 | + console.log('call nop!'); |
| 100 | + socket.emit('nop'); |
| 101 | +}, 1000); |
| 102 | + |
0 commit comments