与nodejs和net的IOT tcp连接错误

man*_*nzt 6 javascript sockets tcp node.js iot

我使用 net 模块创建了一个服务器:

// Creating and connecting with server
const net = require('net');
const server = net.createServer(); //Creating server

//Connecting with server
server.on('connection', function (socket) {
    let remoteAddress = `${socket.remoteAddress},${socket.remotePort}`

    console.log(remoteAddress)
    console.log(`connection is established... ${Date.now()} \n `);
    socket.write(`connection is established...${Date.now()} \n`);
    //Receiving and Sending payload from/to client
    socket.on('data', async function (payload) {
        console.log("payload from client",payload)
        socket.write(`acknowledge : ${payload}`);
    });
    //Close connection
    socket.on('close', function () {
        console.log('Server Connection Closed');
    });
    //Server error
    socket.on('error', function (err) {
        console.log("Caught flash policy server socket error: ")
        console.log(err.stack)
    });
});

server.listen(8001, function () {
    console.log('Server Listing on Port 8001');
 })

Run Code Online (Sandbox Code Playgroud)

我将此代码部署到 AWS EC2,当我尝试连接 telnet 客户端时(telnet ec2_ip 8001),它最初可以正常工作,但一段时间后它会出现以下错误。

telnet客户端截图: 在此输入图像描述

ec2日志截图: 在此输入图像描述

当我尝试使用 ec2 IP 地址和端口 8001 连接真正的 IOT 滑板车时,它甚至一秒钟都没有连接。 在此输入图像描述

谁能告诉我我做错了什么吗?

注:我对物联网了解不多。这是我第一次将 IoT 滑板车与 Nodejs 连接。

Esp*_*pen 0

如果不查看更多代码或获得更多解释,很难确切地知道您的问题是什么。就像你的真实代码中发生了什么一样?日志似乎表明您在初始连接后正在对另一个服务进行出站调用。如果是这种情况,您是否正确处理依赖项的错误情况?未处理的异常会终止您的服务器,并且需要重新启动才能再次工作。如果您使用的依赖项失败,例如数据库、其他服务器、配置文件等在您的滑板车上失败,这可能就是它在不允许单个连接的情况下失败的原因。但在不了解有关应用程序和架构的更多细节的情况下,目前这只是疯狂的猜测。

您的服务器示例代码看起来不错。只要您在 AWS 的路由配置中打开该端口上的流量,它就应该响应。可能你只是耗尽了连接,但这又需要我了解更多信息才能给你一个明确的答案。

我的建议是检查您的依赖关系以及支持系统的日志。