nodejs
-
Javascript LRU Cache개발/nodejs 2023. 10. 11. 11:54
Javascript 언어에서는 메모리 애플리케이션 메모리 공간을 캐시처럼 사용할 수 있는 기능을 제공한다. Redis처럼 key - value 로 사용하면 되는 줄 알았는데 사용방법이 약간 다르다. 설명에 앞서 아래 코드의 결과 값을 예상해보자 import LRU from 'lru-cache'; const cache = new LRU({ max: 3 }); const props = new Set(); cache.set(1, props); props.add('1'); props.add('2'); const result1 = cache.get(1); console.log('Result 1:', result1); set 함수가 실행된 후 props 에 ‘1’, ‘2’가 들어갔으므로 결과값이 빈 집합으로 예상할..
-
멀티 서버 환경에서 Socket.io 사용하기개발/nodejs 2021. 11. 29. 20:00
서버 인스턴스가 하나로 이뤄진 환경에서는 클라이언트와 서버간의 소켓 통신은 그림 1 처럼 하나의 서버에서 모든 소켓 세션을 관리하는 형태로 구현된다. Server1 이 클라이언트와 연결된 모든 소켓 세션을 갖고 있기 때문에 모든 클라이언트에게 Event를 전달할 수 있다. 그런데 그림 1에서 서버를 하나 늘리면 클라이언트와 서버간의 소켓 통신은 그림 2처럼 된다. 클라이언트는 최초에 접속한 서버에 대해서 소켓 세션을 유지하게 되므로 Server1와 Server2 모두 별도의 소켓 세션을 갖게 된다. 그림 2와 같은 형태에서 Server1 에서 모든 클라이언트에게 직접 이벤트를 보내는 것은 불가능하다. 그림 3에서도 알 수 있듯이 Server1과 Client 2 간의 소켓 연결 세션이 없으므로 Server..
-
nodejs + android Socket.IO 를 이용해 소켓 통신 만들기개발/nodejs 2021. 10. 28. 21:32
NodeJs Socket Server nodejs 의 socket.io 라이브러리를 사용하면 손쉽게 클라이언트와 소켓 통신을 할 수 있는 코드를 구현할 수 있다. 코드도 몇줄 되지 않는다. 아래 코드는 typescript로 소켓 통신 부분을 구현해본 것이다. import express from 'express' import httpLib from 'http'; import socketIO from 'socket.io'; const http = httpLib.createServer(express()) const socketio = new socketIO.Server(http, {}) socketio.on("connection", (socket: socketIO.Socket) => { console.log(..
-
nodejs + typescript 버전 heroku로 푸쉬하기개발/nodejs 2021. 10. 27. 21:46
nodejs를 typescript로 짜고 로컬에서 테스트 할 때는 아래 처럼 nodemon 명령어를 사용하면 된다. 그런데 heroku 서버 상에서는 이 명령어를 사용할 수 없다. nodemon --exec ts-node src/index.ts heroku 서버상에서도 typescript를 사용하기 위해선 typescript를 javascript로 변환하는 과정이 필요하다. package.json을 수정하면 heroku에 push 하는 과정에서 typescript를 javascript로 빌드하는 과정을 추가할 수 있다. 아래 코드에서 postinstall 속성이 npm run build로 되어 있는데 이 과정에서 heroku에 설치하면서 최종 명령어로 불리게 된다. build 속성을 tsc로 두면 타입 ..
-
우분투에 최신 nodejs 설치하기개발/nodejs 2021. 3. 28. 12:23
sudo apt-get install nodejs 우분투의 패키지매니저 apt 를 이용해서 Nodejs를 설치 할 수 있기는 하다. 그러나 최신 버전이 아니라 우분투 팀에서 마지막으로 테스르를 완료한 버전(현재 글 작성 시점에서는 8.x.x)을 설치돼서 자바스크립트에서 Optional Chaning으로 짠 코드가 컴파일 되지 않는 문제가 있었다. 그래서 apt 말고 다른 방법으로 설치해야한다. 여러가지 방법이 있겠지만 가장 좋은 방법은 nvm(node version manager)를 쓰는 것 같다. nvm을 사용하면 다양한 노드 버전에서 설치가 가능한데 최신 버전도 물론 설치가 가능하다. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/ins..
-
Node.js vs Spring Boot개발/spring 2021. 3. 13. 22:32
현재 서버 애플리케이션 플랫폼의 큰 두 축은 Spring Boot 와 Node.js 인것 같다. 각각의 플랫폼마다 고유한 장점이 있을 텐데 정작 나는 '일하고 있는 곳에서 사용중이다', '요새 이게 트렌드라고 한다'는 이유로 본질을 망각한채 공부만 해왔던 것 같다. 그래서 이번 포스트에서는 spring boot와 nodejs 각각의 장점과 단점을 늦었지만 다뤄 보고자 한다. Node.js Node.js하면 자바스크립트로 짤 수 있는 서버 애플리케이션을 가장 먼저 떠오르는데 사실 Node js는 Non-blocking I/O를 처리하는데 최적화된 플랫폼이다. Non-blocking I/O는 다른 작업이 처리되는 걸 기다리는 도중에 다른 작업을 하는 것을 말하며 이러한 형태는 짧은 시간에 여러 작업을 처리할..
-
nodejs + postgresql개발/nodejs 2021. 1. 10. 13:12
nodejs로 postgresql 데이터베이스를 사용하는 방법. 엄청 간단하다. 먼저 pg 라이브러리를 npm으로 설치한 후 npm install pg // pg library install host 주소랑 포트번호 그리고 유저 정보들을 담은 오브젝트를 만든 후 pg client를 생성해 연결을 시켜준다. const dbconfig = { host: process.env.DB_HOST, user: process.env.DB_USER, password: process.env.DB_PW, database: process.env.DB_NAME, port: process.env.DB_PORT, ssl: { rejectUnauthorized: false } } const client = new pg.Client(..
-
cannot find module - heroku개발/삽질 기록 2021. 1. 10. 11:01
파일 이름을 리팩토링 한 후 새롭게 배포를 했더니 heroku에서 파일을 찾을 수 없다는 에러가 발생하게 됐다. 분명 로컬에서는 아무 문제 없이 제대로 돌아가고 있는데 heroku에 deploy하면 file을 찾을 수 없다는 에러가 발생했다. 2021-01-10T01:25:18.946380+00:00 app[web.1]: mytrot development mode 2021-01-10T01:25:19.123710+00:00 app[web.1]: internal/modules/cjs/loader.js:883 2021-01-10T01:25:19.123711+00:00 app[web.1]: throw err; 2021-01-10T01:25:19.123712+00:00 app[web.1]: ^ 2021-01-10..