ai-adventure-labs/server/ws-handler.js

28 lines
878 B
JavaScript

const https = require('https');
const WebSocket = require('ws');
const logger = require("./logger");
module.exports = (address, port, api) => {
// console.log(global.openSSH);
// console.log(global.openSSH.cert.toString("utf-8"));
const wss = new WebSocket.Server({ address, port });
wss.on('connection', function connection(ws, req) {
const peerAddress = `${req.socket.remoteAddress}:${req.socket.remotePort}`;
console.log("peerAddress is", peerAddress);
ws.on('message', async (message) => {
logger.wslog("api received:", message);
await api.exec(req.socket, message, (rs, encryptor) => {
logger.wslog("api sended:", rs);
let result = JSON.stringify(rs);
if (encryptor)
throw new Error("encryptor is deprecated. Use TLS wrapping");
ws.send(result);
});
});
});
logger.log(`WebSocket API successful runned at port ${port}`);
}