Я создаю приложение Electron + Angular и хочу, чтобы часть «Электрон» также была TCP-сервером, позволяющим подключаться нескольким клиентам.
Версии, которые я использую:
- Angular CLI: 8.0.6
- Узел: 10.15.3
- ОС: win32 x64
- Angular: 8.0.3
- NPM: 6.4.1
Я пытаюсь использовать пакет "net" для NodeJS, и я не эксперт. Когда я пытаюсь сделать приложение Electron клиентом, все работает нормально (пример кода приведен здесь).
var net = require('net');
var client = new net.Socket();
client.connect(2000, '127.0.0.1', function() {
console.log('Connected');
client.write('Hello, server! Love, Client.');
});
client.on('data', function(data) {
console.log('Received: ' data);
client.write('Data received');
});
client.on('close', function() {
console.log('Connection closed');
});
Тем не менее, когда я пытаюсь заставить его работать как сервер, ничего не работает, никаких сообщений об ошибках, никаких непредвиденных ситуаций (кроме того факта, что сервер не запущен).
Пример кода сервера:
var net = require('net');
const server = net.createServer();
server.listen(PORT, HOST);
let sockets = [];
server.on('connection', function(sock) {
console.log('CONNECTED: ' + sock.remoteAddress + ':' + sock.remotePort);
sockets.push(sock);
sock.on('data', function(data) {
console.log('DATA from ' + sock.remoteAddress + ': ' data);
});
// Add a 'close' event handler to this instance of socket
sock.on('close', function(data) {
let index = sockets.findIndex(function(o) {
return o.remoteAddress === sock.remoteAddress && o.remotePort === sock.remotePort;
})
if (index !== -1) {
sockets.splice(index, 1);
}
console.log('CLOSED: ' + sock.remoteAddress + ' ' + sock.remotePort);
});
});
console.log('Server listening on ' + HOST +':'+ PORT);
Это выполняется в основном файле. js, запущенном как основной процесс Electron , И основной процесс, и процесс рендеринга (в котором отображается Angular) работают правильно, но сервер не работает.
Чего мне не хватает? Заранее спасибо ...