백엔드
[Node.js] Firebase Cloud Messaging을 이용하여 클라이언트에 메시지 전송하기
Black.bean
2020. 9. 6. 02:19
Firebase Cloud Message
Firebase Cloud Message 이하 FCM은 메시지를 간단하게 보낼 수 있는 크로스 플랫폼 메시징 솔루션이다. 해당 내용은 아래 소개한 글에 자세히 설명되어있다.
[안드로이드] Firebase Cloud Messaging
Firebase Cloud Messaging Firebase Cloud Messaging 이하 FCM은 메시지를 빌드, 전송, 수신하는 크로스 플랫폼 메시징 솔루션이다. 안드로이드 앱에서 흔하게 볼 수 있는 Push 메시지가 대표적인 사용 예시이다..
bb-library.tistory.com
구현과정
- Firebase console에서 서버키를 발급받기
- firebase 셋업
- 메시지 전송 요청
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);
});
});