서버의 기본 기능인 리슨, 데이터 수신, 클라이언트 접속 관리 기능을 추가합니다.

    코드 6- 6 서버 기능 추가

    예제 파일 : server.js

    'use strict';
    
    const net = require('net');
    const tcpClient = require('./client.js');
    
    class tcpServer {
        constructor(name, port, urls) {                  // ➊ 생성자
    
            this.context = {                             // ➋ 서버 정보
                port: port,
                name: name,
                urls: urls
            }
            this.merge = {};
            this.server = net.createServer((socket) => { // ➌ 서버 생성
                this.onCreate(socket);                   // ➍ 클라이언트 접속 이벤트 처리
                socket.on('error', (exception) => {      // ➎ 에러 이벤트 처리
                    this.onClose(socket);
                });
                socket.on('close', () => {               // ➏ 클라이언트 접속 종료 이벤트 처리
                    this.onClose(socket);
                });
                socket.on('data', (data) => {            // ➐ 데이터 수신 처리
                    var key = socket.remoteAddress + ":" + socket.remotePort;
                    var sz = this.merge[key] ? this.merge[key] + data.toString() :
                                             data.toString();
                    var arr = sz.split('¶');
                    for (var n in arr) {
                        if (sz.charAt(sz.length - 1) != '¶' && n == arr.length - 1) {
                            this.merge[key] = arr[n];
                            break;
                        } else if (arr[n] == "") {
                            break;
                        } else {
                            this.onRead(socket, JSON.parse(arr[n]));
                        }
                    }
                });
            });
                    
            this.server.on('error', (err) => {           // ➑ 서버 객체 에러 처리
                console.log(err);
            });
            this.server.listen(port, () => {             // ➒ 리슨
                console.log('listen', this.server.address());
            });
        }
            
        onCreate(socket) {
            console.log("onCreate", socket.remoteAddress, socket.remotePort);
        }
            
        onClose(socket) {
            console.log("onClose", socket.remoteAddress, socket.remotePort);
        }
    }
    module.exports = tcpServer;
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.