Files
Superalgos/WebSocketsServer/server.js
T

88 lines
3.0 KiB
JavaScript

require('dotenv').config()
const WebSocket = require('ws')
let wss
let ipc = require('node-ipc');
ipc.config.id = 'hello';
ipc.config.retry = 1500;
ipc.config.silent = true;
let port = process.env.WEB_SOCKETS_PORT
process.on('uncaughtException', function (err) {
if (err.message.indexOf("EADDRINUSE") > 0) {
console.log("Superalgos Web Server cannot be started. Reason: the port " + port + " is already in use by another application. The web server cannot be started until either you stop the other application or you change the port number at the WebServer/.env file for an unused one. (variable name VIRTUAL_PORT)")
return
}
console.log('[ERROR] Web Sockets Server -> server -> uncaughtException -> err.message = ' + err.message)
console.log('[ERROR] Web Sockets Server -> server -> uncaughtException -> err.stack = ' + err.stack)
process.exit(1)
})
process.on('unhandledRejection', (reason, p) => {
console.log('[ERROR] Web Sockets Server -> server -> unhandledRejection -> reason = ' + JSON.stringify(reason))
console.log('[ERROR] Web Sockets Server -> server -> unhandledRejection -> p = ' + JSON.stringify(p))
process.exit(1)
})
try {
ipc.connectTo(
'world',
function () {
ipc.of.world.on(
'connect',
function () {
ipc.log('## connected to world ##'.rainbow, ipc.config.delay);
let eventCommand = {
action: 'greetings',
from: 'Web Sockets Server'
}
ipc.of.world.emit(
'message',
JSON.stringify(eventCommand)
)
wss = new WebSocket.Server({ port: port })
wss.on('connection', ws => {
ws.on('message', message => {
if (ipc.config.silent !== true) {
console.log(`Received message from browser => ${message}`)
}
ipc.of.world.emit(
'message',
message
)
})
ipc.of.world.on(
'message',
function (data) {
ipc.log('got a message from world : '.debug, data);
ws.send(data)
}
);
})
console.log('Web Socket Server Started.')
}
);
ipc.of.world.on(
'disconnect',
function () {
ipc.log('disconnected from world'.notice);
}
);
}
);
} catch (err) {
console.log('[ERROR] Web Sockets Server -> server -> connectTo -> err.message = ' + err.message)
}