본문 바로가기

내일 배움 캠프/그땐 (응답하라 추억시대)

Node.js 서버 2개 연결하기

728x90

방법 

1. 서버를 2개 준비해서 각각 다른 포트로 listen한다.

2. 서버에 연결되는 app.js도 다른 이름으로 2개 준비한다.

3. express.static으로 연결되는 public 폴더도 다른 이름으로 2개 준비한다.

4. 이때, 안에 들어가는 index.html에 구분할 수 있는 문자를 넣어 준다. ex) 1번 HTML, 2번 HTML

5. 1회의 npm run dev를 통하여 localhost:3000과 localhost:8080에 접속한다.

6. 출력 결과가 구분되는지 확인한다.

 

서버 코드

import Http from 'http';
import { ExpressApp } from './app.js';
import { ExpressApp2 } from './app2.js';
import sequelize from './db/sequelize.js';
import Env from './env.js';
import socket from './socket.js';
import { Rooms } from './db/index.js';

export class Server {
  env = new Env();
  expressApp = new ExpressApp();
  httpServer;

  constructor() {
    this.httpServer = new Http.Server(this.expressApp.app);
  }

  databaseConnection = () => {
    return this.sequelizeAuthenticate().then(this.sequelizeSync);
  };

  sequelizeAuthenticate = () => {
    // test connection
    return sequelize.authenticate();
  };

  sequelizeSync = () => {
    if (process.env.NODE_ENV === 'development')
      return sequelize.sync({ force: false });
  };

  runServer = async () => {
    try {
      await this.databaseConnection();
      return await socket(this.serverListen());
    } catch (e) {
      return this.serverErrorHandler(e);
    }
  };

  serverListen = () => {
    return this.httpServer.listen(this.env.port, () => {
      console.log(
        `Server is running on: http://${this.env.host}:${this.env.port}`,
      );
    });
  };

  serverErrorHandler = error => {
    console.log('Server run error: ', error.message);
  };
}

const server = new Server();
server.runServer();

class Server2 {
  env = new Env();
  expressApp = new ExpressApp2();
  httpServer;

  constructor() {
    this.httpServer = new Http.Server(this.expressApp.app);
  }

  databaseConnection = () => {
    return this.sequelizeAuthenticate().then(this.sequelizeSync);
  };

  sequelizeAuthenticate = () => {
    // test connection
    return sequelize.authenticate();
  };

  sequelizeSync = () => {
    if (process.env.NODE_ENV === 'development')
      return sequelize.sync({ force: false });
  };

  runServer = async () => {
    try {
      await this.databaseConnection();
      return await socket(this.serverListen());
    } catch (e) {
      return this.serverErrorHandler(e);
    }
  };

  serverListen = () => {
    return this.httpServer.listen(8080, () => {
      console.log(`Server is running on: http://${this.env.host}:8080`);
    });
  };

  serverErrorHandler = error => {
    console.log('Server run error: ', error.message);
  };
}

const server2 = new Server2();
server2.runServer();

 

결과