카테고리 없음
[Node.js] net module Error: read ECONNRESET errno: -54
Basic Developer
2023. 2. 10. 19:00
Error: read ECONNRESET
at TCP.onStreamRead (node:internal/stream_base_commons:217:20) {
errno: -54,
code: 'ECONNRESET',
syscall: 'read'
}
Socket이 Error을 보낼때 처리를 하지 않아서 생기는 에러이다.
클라이언트 소켓에서 갑자기 TCP 연결을 끊을때 소켓은 에러를 던진다.
이때 핸들링을 해주기 위해서는 리스너를 설정하여 에러를 핸들링 해야한다.
server 측면에서 에러를 핸들링 해야하는 줄 알았지만
클라이언트 측면에서 에러를 잡아주어야 한다.
처음코드
let server = net.createServer(async function (socket) {
socket.setEncoding('utf8');
serviceClass.connect(socket);
socket.on('data', async function (data) {
serviceClass.inputData(socket,data);
});
socket.on('close', function () {
serviceClass.disconnect(socket);
});
});
// print error message
server.on('error', function (err) {
try {
console.log("=======")
console.log(err);
} catch (error) {
console.log(error);
}
});
해결 한 코드
let server = net.createServer(async function (socket) {
socket.setEncoding('utf8');
serviceClass.connect(socket);
socket.on('data', async function (data) {
serviceClass.inputData(socket,data);
});
socket.on('close', function () {
serviceClass.disconnect(socket);
});
//추가된 부분
socket.on('error',function(err){
try {
console.log("=======")
console.log(err);
} catch (error) {
console.log(error);
}
})
});
// print error message
server.on('error', function (err) {
try {
console.log("=======")
console.log(err);
} catch (error) {
console.log(error);
}
});