Skip to main content

How to make chat app by Firebase function?

Why do you think chat service needs Firebase function? Usually we made it by only Firebase database. The answer is as follows.





If you make chat service by using only firebase database,
  • We can not take a Push notification
  • The database server becomes heavy
  • It can be only useful when a partner connects at the same time.
So we should use firebase function for send message notification to partner and save messages in local database(sqlite, realm). And firebase database is only used for saving partner's info (uid, name.. etc) and last message info ( message, timestamp.. etc).
And.. Let's make simple chat service by Firebase function.

1. Update chat message to Firebase database













last_id : last user id sending message.
u_id : my unique id
last_word : last message in this chatting room.


2. Link Firebase database and Firebase Function










  • /u_data/{u_id}/last_message/{room_id} is database reference tree directory
  •  This function is commit when last_id and u_id is different. This means when you send message to partners, this event triggered.
  • We can edit fcm push payload.
  • At last we can send push notification to partner

 3. Where can we take this push notification?
When we use only firebase database, we take message by database callback event like ValueChangeEventListener or ChildChangeEventListener ... But if you send message by using firebase function, it can be taken in fcm receiver (onMessage). We can manage payload in onMassage method like other common chat service.

At result 
  • Firebase database can be light 
  • We can send push notification without server. 
  • Partner can take message at offline
  • We can handle message flexable in local database

Comments


  1. what is the difference between sandbird and firebase

    ReplyDelete
  2. This article contains great original thinking. The informational content here proves that things aren't so black and white. I feel smarter from just reading this. Emerald chat rooms for users who are looking for alternatives to emerald chat. Finely refined chat rooms, moderated and free of bots are available to everyone in order to talk to strangers. Other than text chat users can enjoy emerald omegle chat with voice notes instead of typing. Feature rich emerald chat rooms without registration for everyone.

    ReplyDelete

Post a Comment

Popular posts from this blog

OpenGL SL - Translate, roate, and scale

Translate, rotate and scale are most basic element of image effect. If you didn't understand how make effect at each pixel, please read again before post "Show Video and Image" . 1. Translate Translation means each pixel move parallel on the x, y-axis. In other words, if you want to translate 0.25 on the x-axis, a pixel should point to a distance of -0.25 from the original. Translate ex) void mainImage( out vec4 fragColor, in vec2 fragCoord ){     vec2 uv = fragCoord/iResolution.xy;     if (uv.x < 0.5 ){         // translate to x ( -0.25 )         uv.x += 0.25 ;     } else {         // translate to x ( +0.25 )         uv.x -= 0.25 ;     }     fragColor = texture (iChannel0, uv); } result) 2. Scale Scale also has a  similar concept to parallel translation. If you want to zoom in twice, each pixel s...

OpenGL SL - Mosaic effect

Mosaic effect is similar to lowering the resolution of an image. Let's see example image. And full source code likes below. void mainImage( out vec4 fragColor, in vec2 fragCoord ){     // Normalized pixel coordinates (from 0 to 1)     vec2 uv = fragCoord/iResolution.xy;     if (uv.x > 0.7 && uv.y < 0.4 ){          //left bottoom small image         uv.x -= 0.6 ;         uv *= 2.0 ;         fragColor = texture (iChannel0, uv);         fragColor += vec4 ( 0.2 );         return ;     }     //mosaic effect     uv = uv * 30.0 ;     vec2 uv = floor (uv);     uv = uv/ 30.0 ;     fragColor = texture (iChannel0, uv); } The key function of mosaic effect is "floor" If you want to make it sharper, multiply uv by ...

OpenCV : How to setting OpenCV in CLion

CLion is A Cross-Platform IDE for C and C++ by JetBrains Setting OpenCV in CLion is so easy. FIrst, make new c++ project. Second, edit CmakeList.txt cmake_minimum_required( VERSION 3.10 ) project( [YourProject] ) set( CMAKE_CXX_STANDARD 11 ) find_package( OpenCV REQUIRED ) add_executable( [YourProject] main.cpp ) target_link_libraries( [YourProject] ${OpenCV_LIBS} ) At Last include OpenCV to main.cpp #include <iostream> #include "opencv2/opencv.hpp" using namespace std ; using namespace cv ; ...