본문 바로가기

백엔드

[Node.js] Firebase Cloud Messaging을 이용하여 클라이언트에 메시지 전송하기

Firebase Cloud Message

Firebase Cloud Message 이하 FCM은 메시지를 간단하게 보낼 수 있는 크로스 플랫폼 메시징 솔루션이다. 해당 내용은 아래 소개한 글에 자세히 설명되어있다.

 

[안드로이드] Firebase Cloud Messaging

Firebase Cloud Messaging Firebase Cloud Messaging 이하 FCM은 메시지를 빌드, 전송, 수신하는 크로스 플랫폼 메시징 솔루션이다. 안드로이드 앱에서 흔하게 볼 수 있는 Push 메시지가 대표적인 사용 예시이다..

bb-library.tistory.com

 

 

구현과정

  1. Firebase console에서 서버키를 발급받기
  2. firebase 셋업
  3. 메시지 전송 요청

 

1. Firebase console에서 서버키를 발급받기

생성한 프로젝트 콘솔의 우측 상단의 설정 버튼의 프로젝트 설정으로 들어간 뒤, 메뉴에서 서비스 계정을 클릭한다.

그리고 아래에 보면 새 비공키 생성 버튼을 클릭하면 키 관련 json 파일이 다운로드된다. 이를 프로젝트 폴더 어딘가에 추가한다.

 

2. 프로젝트에 firebase 셋업

먼저 npm install로 firebase를 설치해준다.

npm install firebase-admin --save

 

그다음 모듈을 초기화한다.

 

//admin.js
const admin = require("firebase-admin");
const serviceAccount = require("비공개 키 경로");

module.exports = admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)});

 

 

3. 메시지 전송

굉장히 간단하게 서버로 GET, http://localhost:3000/location 요청이 오면 특정 디바이스에 정보를 보내도록 설정하였다.

const admin = require('../fcm/admin.js')

router.get('/location', (req, res) => {
    const registrationToken = '디바이스 토큰 값'
    const message = {
        data: {
            score: '850',
            time: '2:45'
        },
        token: registrationToken
    };

    admin.messaging().send(message)
        .then((response) => {
            // Response is a message ID string.
            console.log('Successfully sent message:', response);
            res.send(response);
        })
        .catch((error) => {
            console.log('Error sending message:', error);
            res.send(error);
        });

});