728x90
문제
서비스와 서비스 사이에서 DB데이터를 서로 접근하고 싶다.
정확하게는 userId를 기반으로 하여 Users테이블에 있는 nickname을 Posts에서 가져오고 싶다.
시도
// Users 접속 함수
// 로그인을 목적으로 작성했던 것이라 변수명에 Login이 들어가는데 아직 수정을 하지 못하였다.
connectToUsers(host, port, onNoti) {
// Users 전달 패킷
const packet = makePacket('/users', 'GET', 0, this.context);
let isConnectedLogin = false;
this.clientLogin = new TcpClient(
host,
port,
(options) => {
// Users 접속 이벤트
isConnectedLogin = true;
this.clientLogin.write(packet);
},
// Users 데이터 수신 이벤트
(options, data) => {
onNoti(data);
},
// Users 접속 종료 이벤트
(options) => {
isConnectedLogin = false;
},
// Users 통신 에러 이벤트
(options) => {
isConnectedLogin = false;
},
);
// 주기적으로 재접속 시도
setInterval(() => {
if (isConnectedLogin !== true) {
this.clientLogin.connect();
}
}, 3000);
}
}
1. app.js에 TCP Client를 상속받아 UsersModule 서버의 Client를 만든다.
2. 부모 클래스인 TCP server에 로그인 접속 함수인 connectToUsers을 만든다. (GET /users 유저 정보 전체 조회)
3. TCP server를 상속받아 만들어지는 BoardsModule 서버의 생성자 안에 connectToUsers을 넣어준다.
4. Boards서버에서 모든 유저 정보에 접근이 가능해진다.
- Boards 서버를 켤 때 connectToUsers 가 한 번 실행되긴 하는데 서버에 무리가 가지 않는지 검토 중이다.
(소중한 서버)
해결
이제 유저 정보를 찾아서 nickname을 표시할 수 있으나 자동화가 되지 않아
로그인 하면 userId를 자동으로 받아오는 방법을 연구하고 있다.
미들웨어와 같은 기능을 하는 매개를 넣는 아이디어가 있다.
연구중.
알게 된 점
서비스와 서비스 사이에서 부모 서버 클래스에 접속 함수를 만들면 자식 서버 클래스에서 상속받아 활용해 볼 수 있다.
'내일 배움 캠프 > 그땐 (응답하라 추억시대)' 카테고리의 다른 글
망형 토폴로지의 DB에서 수정된 정보 조회 시 반영 (0) | 2023.08.20 |
---|---|
망형 토폴로지에 대한 고찰 (0) | 2023.08.20 |
Node.js TCP서버에서 query와 params를 이용하여 CRUD 하기 (0) | 2023.08.19 |
Node.js 서버 2개 연결하기 (0) | 2023.08.17 |
마이크로 서비스 아키텍처 (0) | 2023.08.17 |