UNPKG

int-cli

Version:

INT is the new generation of bottom-up created system of IoT and blockchain

65 lines (64 loc) 2.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const events_1 = require("events"); const http = require("http"); class RPCServer extends events_1.EventEmitter { constructor(listenaddr, port) { super(); this.m_addr = listenaddr; this.m_port = port; } on(event, listener) { return super.on(event, listener); } once(event, listener) { return super.once(event, listener); } prependListener(event, listener) { return super.prependListener(event, listener); } prependOnceListener(event, listener) { return super.prependOnceListener(event, listener); } start() { if (this.m_server) { return; } this.m_server = http.createServer(); this.m_server.on('request', (req, resp) => { if (req.url !== '/rpc' || req.method !== 'POST') { resp.writeHead(404); resp.end(); } else { let jsonData = ''; req.on('data', (chunk) => { jsonData += chunk; }); req.on('end', () => { try { let reqObj = JSON.parse(jsonData); // console.info(`RPCServer emit request ${reqObj.funName}, params ${JSON.stringify(reqObj.args)}`); if (!this.emit(reqObj.funName, reqObj.args, resp)) { resp.writeHead(404); resp.end(); } } catch (e) { console.info(`RPCServer JSON parse data error, error: ${e}`); resp.writeHead(404); resp.end(); } }); } }); this.m_server.listen(this.m_port, this.m_addr); } stop() { if (this.m_server) { this.m_server.close(); delete this.m_server; } } } exports.RPCServer = RPCServer;