+ All Categories
Home > Technology > [NodeJS] - NET 모듈 소개

[NodeJS] - NET 모듈 소개

Date post: 16-May-2015
Category:
View: 3,592 times
Download: 6 times
Share this document with a friend
Description:
OctoberSkyJs 스터디에서 발표한 프레젠테이션 문서입니다. NodeJS의 NET 모듈에 대한 소개이며, 관련 예제 링크도 공유드립니다. [데모] - http://inpost.kr:7777/ [코드] - http://test.youngman.kr/node/ws/ws.js
Popular Tags:
35
Speaker. Moon-Hak-I
Transcript
Page 1: [NodeJS] - NET 모듈 소개

Speaker. Moon-Hak-I

Page 2: [NodeJS] - NET 모듈 소개

Prologue!본 발표는 아래와 같은 내용으로 진행되며, 모듈의 내부적인 코드 리뷰는 생략한다.

구조 상세 예제

Page 3: [NodeJS] - NET 모듈 소개

Overview!

�  비동기 네트워크 관련 API 제공 �  서버와 클라이언트 모두 포함

Page 4: [NodeJS] - NET 모듈 소개

Structure!

Wrapper Utility

Server EventEmitter Socket

Stream

Page 5: [NodeJS] - NET 모듈 소개

Detail!

net.createServer([options], [connectionListener]) : TCP 서버를 생성하며, ‘connectionListener’ 매개 변수는 자동으로 ‘connection’ 이벤트의 리스너로 추가된다.

Wrapper!

Page 6: [NodeJS] - NET 모듈 소개

Detail!

net.connect(options, [connectionListener]) net.connect(port, [host], [connectionListener]) net.connect(path, [connectionListener]) : 새로운 소켓 객체를 생성하고 해당 위치로 소켓을 연다. 소켓이 설정되면 ‘connection’ 이벤트가 발생되고, ‘connectionListener’ 매개 변수는 ‘connection’ 이벤트에 대한 리스너로서 추가된다.

Wrapper!

Page 7: [NodeJS] - NET 모듈 소개

Detail!

server.listen(port, [host], [backlog], [callback]) server.listen(path, [callback]) server.listen(handle, [callback]) : 지정된 서버(port, host, path, …)의 커넥션 연결을 시작한다. 서버가 실행되면 ‘listening’ 이벤트가 발생되고, ‘callback’ 매개 변수는 ‘listening’ 이벤트에 대한 리스너로서 추가된다.

Server!

Page 8: [NodeJS] - NET 모듈 소개

Detail!

server.close([callback]) : 새로운 커넥션 연결을 중단하고 기존의 커넥션만 유지한다. 그리고 모든 커넥션이 종료되었을 때 서버를 닫는다. 서버는 ‘close’ 이벤트를 발생시키고 선택적으로 ‘close’ 이벤트를 받을 수 있는 콜백을 매개 변수로 정할 수 있다.

Server!

Page 9: [NodeJS] - NET 모듈 소개

Detail!

server.address() : IP 주소와 포트 번호와 같은 서버 정보를 운영체제로부터 가져온다. 참고로 ‘listening’ 이벤트가 발생한 후에만 메소드 호출이 가능하다.

Server!

Page 10: [NodeJS] - NET 모듈 소개

Detail!

server.maxConnections : 서버에 연결되는 커넥션의 최대 수를 정하는 프로퍼티

Server!

Page 11: [NodeJS] - NET 모듈 소개

Detail!

server.connections : 서버에 동시에 연결된 커넥션 수를 가지는 프로퍼티

Server!

Page 12: [NodeJS] - NET 모듈 소개

Detail!

server.on(event, listener)

Event Description listening server.listen 메소드가 호출되었을 경우 connection 새로운 커넥션이 만들어질 경우 close 서버가 닫힐 경우 error 에러가 발생할 경우

Server!

Page 13: [NodeJS] - NET 모듈 소개

Detail!

socket.connect(port, [host], [connectListener]) socket.connect(path, [connectListener]) : 일반적으로 net.connect 래핑 함수를 호출하여 소켓을 열기 때문에 사용자 정의 소켓을 구현해야 할 경우에만 사용한다. 그리고 ‘connectListener’ 매개 변수는 ‘connect’ 이벤트에 대한 리스너로서 추가된다.

Socket!

Page 14: [NodeJS] - NET 모듈 소개

Detail!

socket.bufferSize : 현재 쓰여질 버퍼의 문자 수를 나타내는 프로퍼티

Socket!

Page 15: [NodeJS] - NET 모듈 소개

Detail!

socket.setEncoding([encoding]) : 읽을 스트림으로 소켓에 대한 인코딩을 설정한다.

Socket!

Page 16: [NodeJS] - NET 모듈 소개

Detail!

socket.write(data, [encoding], [callback]) : 소켓에 데이터를 보낼 수 있는 메소드이며, 데이터의 기본 인코딩은 UTF8이다. 버퍼에 쌓인 데이터가 성공적으로 전송되었다면 true를 반환한다. 버퍼가 모두 비워졌을 경우에 ‘drain’ 이벤트가 발생한다.

Socket!

Page 17: [NodeJS] - NET 모듈 소개

Detail!

socket.end([data], [encoding]) : write 메소드와 기능은 같지만 일부 스트림만 종료하며 FIN 패킷을 보낸다. 이 때 서버가 일부 데이터를 보낼 수 있다. (TCP Half-close)

Socket!

Page 18: [NodeJS] - NET 모듈 소개

Detail!

socket.destroy() : 소켓의 I/O 활동을 발생하지 않게 하는 메소드이며, 에러가 발생했을 경우에 필요하다.

Socket!

Page 19: [NodeJS] - NET 모듈 소개

Detail!

socket.pause() : 데이터 읽기를 중지하며, ‘data’ 이벤트는 발생되지 않는다.

Socket!

Page 20: [NodeJS] - NET 모듈 소개

Detail!

socket.resume() : 데이터 읽기를 재개한다.

Socket!

Page 21: [NodeJS] - NET 모듈 소개

Detail!

socket.setTimeout(timeout, [callback]) : 소켓에 설정된 초과 시간이 지나면 ’timeout’ 이벤트가 발생하며, ‘callback’ 매개 변수는 ‘timeout’ 이벤트의 리스너로서 추가된다. 참고로 ‘timeout’ 이벤트가 발생하여도 커넥션은 유지된다. 커넥션을 끊기 위해서는 사용자가 end 메소드나 destroy 메소드를 호출해야 한다.

Socket!

Page 22: [NodeJS] - NET 모듈 소개

Detail!

socket.setNoDelay([noDelay]) : Nagle 알고리즘을 비활성화하고, 기본적으로 TCP 연결은 Nagle 알고리즘을 사용하므로 데이터를 보내기 전에 이를 버퍼에 저장한다. ‘noDelay’ 매개 변수를 설정하면 write 메소드가 호출될 때마다 곧바로 데이터를 전송한다.

Socket!

Page 23: [NodeJS] - NET 모듈 소개

Detail!

socket.setKeepAlive([enable], [initialDelay]) : Keep-Alive 기능의 활성화 유무를 설정하는 메소드이다. 기본적으로 비활성화 되어있으며 지연 시간을 설정할 수 있다.

Socket!

Page 24: [NodeJS] - NET 모듈 소개

Detail!

socket.address() : IP 주소와 포트 번호와 같은 서버 정보를 운영체제로부터 가져온다.

Socket!

Page 25: [NodeJS] - NET 모듈 소개

Detail!

socket.remoteAdress : 원격 IP 주소를 가지는 프로퍼티

Socket!

Page 26: [NodeJS] - NET 모듈 소개

Detail!

socket.remotePort : 원격 포트를 가지는 프로퍼티

Socket!

Page 27: [NodeJS] - NET 모듈 소개

Detail!

socket.bytesRead : 소켓이 받은 총 바이트 수를 가지는 프로퍼티

Socket!

Page 28: [NodeJS] - NET 모듈 소개

Detail!

socket.bytesWritten : 소켓에 보낸 총 바이트 수를 가지는 프로퍼티

Socket!

Page 29: [NodeJS] - NET 모듈 소개

Detail!

socket.on(event, listener)

Event Description connect 소켓 커넥션이 설정되었을 경우 data 데이터를 받았을 경우 end 소켓이 FIN 패킷을 보냈을 경우 timeout 시간이 초과되었을 경우 error 에리가 발생할 경우 close 소켓이 닫힌 경우

Socket!

Page 30: [NodeJS] - NET 모듈 소개

Detail!

net.isIP(input) : 입력된 IP의 버전을 반환한다.

Utility!

Page 31: [NodeJS] - NET 모듈 소개

Detail!

net.isIPv4(input) : 입력된 IP의 버전이 4일 경우, true를 반환한다.

Utility!

Page 32: [NodeJS] - NET 모듈 소개

Detail!

net.isIPv6(input) : 입력된 IP의 버전이 6일 경우, true를 반환한다.

Utility!

Page 33: [NodeJS] - NET 모듈 소개

Example!

�  간단한 웹 서버 만들기 �  사용 모듈 (NET + MIME) �  데모 (http://inpost.kr:7777)

Page 34: [NodeJS] - NET 모듈 소개

Example!

Page 35: [NodeJS] - NET 모듈 소개

Thank you!


Recommended