Nodejs Error: read ECONNRESET

 错误原因:与客户端的Socket被客户端强行被断开,而服务器还企图read。

const net=require('net');

var tcp=net.createServer((socket)=>{
    console.log('someone connects.');

    socket.on('data',(d)=>{ 
        //数据到达:d
    });

    socket.on('close',()=>{
        //当socket链接被关闭
        console.log("close");
        
    });

    /*======错误原因是没有on error事件,需要绑定,添加下边这个on error事件即可======*/
    socket.on('error',(err)=>{
        console.log(err);
        
    });
});

tcp.on('error', (err) => {
    console.log(err);
  });

tcp.listen(3600,"127.0.0.1",()=>{
    console.log('serv started. listen on http://127.0.0.1:3600/');
})

解决方法:在createServer里的Socket绑定error事件即可,不然出现错误会throw,而throw会中断程序。

socket变量名.on('error',(err)=>{
        console.log(err);
});

 

PS_0:建议如上一样,给创建的Server也绑定error事件,不然也有可能出现未知错误导致程序终止。另外,需要给用户Socket提交的数据解析添加trycatch,防止意外中断程序,毕竟也存在一些人把客户端逆向了然后尝试越权获取一些数据或者提交恶意数据的可能。

PS_1:关于throw中断,你可以做个小实验,运行之后你会发现,123456789打印不出来,console里只有throw

throw "123";
console.log(123456789);

 

看完记得点赞哦~

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值