Используя приведенный ниже код, я получаю данные с устройств.Но если устройство отправляет данные больше чем 1024 байта, лишние данные были урезаны, и я получаю только 1024 байта.Если есть максимальный размер чтения, который ограничен 1024 байтами, как его увеличить?
Я попытался проверить и увеличить текущий размер буфера
socket.bufferSize // result is 0
socket.setBufferSize(8192); // error - setBufferSize is not a function
Ниже приведен код сокета для получения данных.
'use strict';
import net from 'net';
let logger = require('./logger')(module);
/*
* Socket Server.
*/
const app = net.createServer(socketServer)
/**
* Socket Server Error.
*/
.on('error', (error) => {
if (error.code === 'EADDRINUSE') {
/**
* Address already in use.
*/
logger.error(`port already in use: ${error}`);
} else {
/**
* Other types of errors.
*/
logger.error(`error in socket server: ${error}`);
}
})
/**
* Socket Server Close.
*/
.on('close', () => {
logger.error(`socket server closed`);
});
function socketServer(socket) {
/**
* @param {Number} milli-seconds - Trigger 'timeout' event if TCP
* Socket is idle for given time.
*/
socket.setTimeout(config.tcp_timeout);
// socket.setBufferSize(8192) // gives error
/**
* @param {Buffer} deviceData - Device Data in Buffer format.
*/
socket.on('data', (deviceData) => {
logger.debug(deviceData);
});
socket.on('drain', () => {
/**
* Trigger when socket.write is complete.
*/
// [ TODO: findout when this is executed. ]
logger.info(`socket write is succesful`);
});
socket.on('timeout', () => {
/**
* [TODO: step if connection is idle.]
*/
logger.warn(`${socket.imei} is idle`);
// socket.destroy();
});
}
export default app;