Я установил два 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.
Кто-нибудь с подобным опытом?