Push notification server backend for iOS and Android Interval Poll methods

285 views Asked by At

I am writing a NodeJS push notification server for iOS and Android. Currently, once I get the device tokens I save them in a local MongoDB database and then fire notifications when there is a change. The problem is, that the database where the "change"(information is added) happens isn't my own. It's a third party's server. So the way I am aware of the change in the server is by using an API provided by the third party. My current solution is using setTimeout to make a request every X minutes to check for a change and then firing a notification based on that. The shorted interval is 10 minutes and the longest one is 1 hour. I change the intervals dynamically through out the day based on time. My question(s) is (are),

1.) Is the setTimeout method the best possible solution to this problem? If not what else can I use?

2.) Is there any way I can implement Web Sockets in this scenario?

3.) If setTimeout is the only option, what kind of problems should I expect to run into?

This what the current function looks like

 function start_notifications_server_driver() {
    if(current_user_info.num_sent <= current_user_info.frequency){
       //I removed the interval object on here because it's quite large and would take up space here 
        for(var i = 0; i < intervals.length; i++){
            if(check_if_time_between(intervals[i])){
                if(dev_mode) console.log("Returned true for", intervals[i]);
                temp_interval = intervals[i].frequency;
                break;
            }
        }
        check_updates_for_channels_driver();
        setTimeout(start_notifications_server_driver, temp_interval);
        console.log("Time Interval changed to now", temp_interval);
    }
 }
0

There are 0 answers