반응형
TCP
Node.js에서 제공되는 스트림 소켓을 사용하며 연결형 소켓이다.
연결형 소켓이므로 신뢰성이 보장되며 세션 관리가 중요하다.
event
- close : 서버가 닫힌후에 이벤트 발생
- connection : 새로운 연결이 만들어지면 이벤트 발생
- error : 에러 발생 시 이벤트 발생, 'close'이벤트는 이 이벤트가 발생한 후 직접 호출
- listening : server.listen() 함수 호출 후 bind되었을때 이벤트 발생
- end : 클라이언트 소켓 세션이 끊어졌을때(FIN Packet을 받았을 때) 이벤트 발생
- data : 클라이언트 소켓으로부터 데이터를 수신받았을 때 이벤트 발생
- timeout : 소켓 세션이 비활성화 되었을 때 시간 초과될때 발생되는 이벤트
//TCP
const net = require('net');
//클라이언트 저장할 배열
let clients = [];
let tServer = net.createServer(function(client) {
logger.info("connection : "+client.remotePort);
logger.info('Client connection');
logger.info(' local = '+ client.localAddress +':'+ client.localPort);
logger.info(' remote ='+ client.remoteAddress+':'+ client.remotePort);
logger.info(' client ='+ JSON.stringify(client));
//클라이언트 정보 저장
clients.push(
{
name : client.remotePort,
client : client
}
);
logger.info("connection clients list : "+ clients);
client.setEncoding('utf8');
client.on('data', function(data) {
logger.info('클라이언트로부터 받은 remort port : '+ client.remotePort +' / 데이터 : '+ data.toString());
//데이터를 발신한 소켓 클라이언트에게 메시지 발신
client.write('ok');
});
client.on('end', function() {
//클라이언트 소켓이 커넥션을 끊었을때
logger.info("end connection : "+client.remotePort);
logger.info(client.remoteAddress + ' Client disconnected');
let idx = clients.indexOf(clients.name);
clients.splice(idx,1);
logger.info(clients);
});
client.on('error', function(err) {
logger.info('Socket Error: ', JSON.stringify(err));
});
client.on('timeout', function() {
logger.info('Socket Timed out');
});
});
tServer.listen(config.TCP_PORT, function() {
logger.info('TCP Server listening on : ' + JSON.stringify(tServer.address()));
tServer.on('close', function(){
logger.info('Server Terminated');
});
tServer.on('error', function(err){
logger.info('Server Error: ', JSON.stringify(err));
});
});
도움이 되셨다면 하트 및 댓글 부탁드립니다♥
반응형
'JAVASCRIPT > NodeJS' 카테고리의 다른 글
[NodeJS] Jimp 이용하여 비트맵 조작하기(c++ binary 통신) (0) | 2021.01.15 |
---|---|
[NodeJS] Jimp 이용하여 이미지 속성 확인하기 (0) | 2021.01.15 |
[NodeJS] UDP Socket Server 구성하기 (0) | 2020.12.01 |
[NodeJS] .env 환경변수 (0) | 2020.12.01 |
[NodeJS] Express-generate 이용하여 프로젝트 생성하기 (0) | 2020.01.30 |
댓글