Электронный TCP-сервер - PullRequest
       3

Электронный TCP-сервер

0 голосов
/ 28 февраля 2020

Я создаю приложение Electron + Angular и хочу, чтобы часть «Электрон» также была TCP-сервером, позволяющим подключаться нескольким клиентам.

Версии, которые я использую:

  1. Angular CLI: 8.0.6
  2. Узел: 10.15.3
  3. ОС: win32 x64
  4. Angular: 8.0.3
  5. 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) работают правильно, но сервер не работает.

Чего мне не хватает? Заранее спасибо ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...