Answer the question
In order to leave comments, you need to log in
How to asynchronously process received data by a socket? Event 'data' is not asynchronous?
When writing a simple event:
const EventEmitter = require('events');
let myEmitter = new EventEmitter();
myEmitter.on('aaa', (d) => {
let ii = 1;
console.log('функция начала выполняться');
setImmediate(() => {
for (let i = 1; i < 1000000000; i++) {
ii = ii * i;
}
console.log(d);
});
console.log('функция выполнилась');
});
myEmitter.emit('aaa', 1);
myEmitter.emit('aaa', 2);
myEmitter.emit('aaa', 3);
функция выполнилась
функция начала выполняться
функция выполнилась
функция начала выполняться
функция выполнилась
1
2
3
const net = require('net');
const fs = require('fs');
const UNIX_DOMAIN_PATH = '/tmp/sockets';
try{
fs.unlinkSync(UNIX_DOMAIN_PATH + '/test.sock');
} catch (err) {}
const server = net.createServer();
server.on('connection', handleConnection);
server.listen(UNIX_DOMAIN_PATH + '/test.sock');
function handleConnection(conn) {
console.log('new client connection');
let i = 0;
conn.on('data', (d) => {
i++;
console.log('i = ' + i);
setImmediate(() => {
let ii = 1;
console.log('функция начала выполняться');
console.log(d);
for (let i = 1; i < 1000000000; i++) {
ii = ii * i;
}
console.log('функция выполнилась');
});
console.log('end');
});
conn.once('close', onConnClose);
conn.on('error', onConnError);
function onConnClose() {
console.log('connection closed');
}
function onConnError(err) {
console.log('Connection error: %s', err.message);
}
}
nc -U /tmp/sockets/test.sock
data socket:new client connection
i = 1
end
функция начала выполняться
<Buffer 31 0a>
функция выполнилась
i = 2
end
функция начала выполняться
<Buffer 31 0a>
функция выполнилась
Answer the question
In order to leave comments, you need to log in
in general, nodejs is an asynchronous engine.
what result do you want to get? at the exit .
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question