node.js - 如何在 nodejs 套接字中接收超过 1024 字节的数据?
问题描述
使用下面的代码,我正在从设备接收数据。但是如果设备发送的数据超过 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;
解决方案
推荐阅读
- python - Python Selenium:从嵌套类中提取动态表
- swift - 在 SwiftUI 文本中显示已发布的整数
- express - 从 express 中间件中删除子路由
- javascript - 如何在 TypeScript 中导入 KnockOut 4?
- html - 如何创建位于所有内容前面的 div 加载?
- r - R如何将字符向量与矩阵数绑定
- python - 将 for 循环重写为 multiprocess.Pool().map
- android - 尝试使用 firebase 运行我的 Android 应用程序时遇到问题
- powershell - 为什么我的计算列是空的(它使用哈希表查找)
- reactjs - 有条件地在 dom 更改反应路由器时禁用滚动到顶部