错误原因:与客户端的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);

 

看完记得点赞哦~

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐