Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const dgram = require('dgram');
- const server = dgram.createSocket('udp4');
- const INVERTER_HOST = 'goodwe';
- const TIMEOUT_BY_REQUEST = {
- 'f70388b800213ac1' : 60000, // inverter info
- };
- const DEFAULT_TIMEOUT = 5000;
- const cacheByRequest = new Map();
- server.on('error', (err) => {
- console.error(err);
- server.close();
- });
- server.on('message', (msg, rinfo) => {
- const hex = msg.toString('hex');
- console.log(`Server got request (HEX): ${hex}`);
- const reply = (msg) => {
- server.send(msg, rinfo.port, rinfo.address);
- };
- if (cacheByRequest.has(hex) && cacheByRequest.get(hex).timeout > Date.now()) {
- reply(cacheByRequest.get(hex).data);
- }else {
- const client = dgram.createSocket('udp4');
- client.on('message', (msg) => {
- cacheByRequest.set(hex, {
- timeout: Date.now() + (TIMEOUT_BY_REQUEST[hex] || DEFAULT_TIMEOUT),
- data: msg,
- });
- reply(msg);
- client.close();
- });
- client.send(msg, 0, msg.length, 8899, INVERTER_HOST);
- }
- });
- server.bind(8899);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement