Node.js Задержка TCP-сервера в получении событий «данных» от клиентов - PullRequest
0 голосов
/ 03 февраля 2019

Я установил два TCP-сервера в Node.js с собственным модулем 'net'.Один написан на TypeScript, а другой - просто на обычном JavaScript.

Простой JS-сервер работает, как и ожидалось, но TS-один не получает событие data в реальном времени.Похоже, что между событиями данных есть задержка.

Я пытался изменить свойство target в tsconfig, но не сделал никаких различий.

Это версия TS

import { createServer, Socket } from 'net';
import GameConnection from './network/GameConnection';

class Server {
    public port: number;
    public clients: Socket[] = [];
    constructor(port: number) {
        this.port = port;
    }

    start(): this {
        createServer(socket => {
            const conn = new GameConnection(socket);
            console.log('client connected');

            this.clients.push(socket);

            socket.on('data', d => {
                conn.onData(d, d.byteOffset, d.byteLength);
            });

            socket.on('close', had_error => {
                if (had_error) {
                    //socket was closed due to an error
                }
                console.log('client socket closed');
                this.clients.splice(this.clients.indexOf(socket), 1);
            });
        })
            .on('error', err => {
                console.log(err);
            })
            .listen(this.port, () => {
                console.log('server bound');
            });

        return this;
    }
}

export default Server;

tsconfig.json

{
    "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "outDir": "dist",
        "rootDir": "./",
        "strict": true,
        "strictFunctionTypes": true
    },
    "exclude": ["node_modules"]
}

и это версия JS

const net = require('net');
const GameConnection = require('./network/GameConnection');

const server = net.createServer(c => {
    const conn = new GameConnection(c);
    console.log('client connected');

    c.on('data', d => {
        conn.onData(d, d.byteOffset, d.byteLength);
    });
});

server.on('error', err => {
    console.log(err);
});

server.listen(43332, () => {
    console.log('server bound');
});

Когда клиент подключается, он должен запустить сразу два события подряд.Сервер JS получает оба события нормально, но между этими событиями в версии сервера TS имеется задержка примерно на 2-3 секунды.

И даже после начальных событий сервер TS всегда добавляет задержку между приемомdata.

Кто-нибудь с подобным опытом?

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