2016-05-08 3 views
1

У меня есть синтаксический анализатор, развернутый с Heroku (из моего репозитория GitHub) и размещенный mongoLab. Я пытаюсь отправить запланированные push-уведомления в мое приложение, и kue кажется наиболее жизнеспособным вариантом. Однако, поскольку я очень незнакома с этим, я не уверен, как подойти к нему. Я считаю, что правильно установил kue на своем сервере (через GitHub). Теперь я хотел бы запланировать этот код, который будет выполняться на дату в будущем:Как запланировать работу с kue на parse-сервере?

Parse.Cloud.define("sendPush", function(request, response) { 


     var pushQuery = new Parse.Query(Parse.Installation); 
     pushQuery.equalTo('username', request.params.targetUsername); 

     Parse.Push.send({ 
     where: pushQuery, // Set our Installation query                                        
     data: { 
      alert: 'Hello!', 
      badge: 'Increment', 
      sound: 'PopDing.caf' 
     }, 
     }, { success: function() { 
    console.log("#### PUSH OK"); 
     }, error: function(error) { 
    console.log("#### PUSH ERROR" + error.message); 
     }, useMasterKey: true}); 

    }); 

Если я приближаюсь это правильный путь, то мне нужно код, чтобы просто запланировать задание (код выше) для выполнения в указанное время в будущем. Я не планирую, чтобы код запускался регулярно или с интервалом, только один раз в указанное время в будущем. Ответ или любой совет были бы весьма признательны, спасибо!

ответ

1

Вот пример того, как можно выполнить эту задачу календарного планирования с kue только один раз в определенное время в будущем (после 12 часов)

var kue = require('kue'); 

// create our job queue 
var jobs = kue.createQueue(); 

// one minute 
var minute = 60000; 

var job= jobs.create('parseCloud', { 
    alert: 'Hello!', 
      badge: 'Increment', 
      sound: 'PopDing.caf' 
}).delay(minute * 60 * 12) 
    .priority('high') 
    .save(); 



job.on('complete', function() { 
    console.log('renewal job completed'); 
}); 



jobs.process('parseCloud', function (job, done) { 

     var pushQuery = new Parse.Query(Parse.Installation); 
     pushQuery.equalTo('username', request.params.targetUsername); 

     Parse.Push.send({ 
     where: pushQuery, // Set our Installation query                                        
     data: { 
      alert: job.data.alert, 
      badge: job.data.badge, 
      sound: job.data.sound 
     }, 
     }, { success: function() { 

     console.log("#### PUSH OK"); 
     done(); 
     }, error: function(error) { 
     console.log("#### PUSH ERROR" + error.message); 
     done(); 
     }, useMasterKey: true}); 

}); 

// start the UI 
kue.app.listen(3000); 
console.log('UI started on port 3000'); 
+0

Большое спасибо за ответ! Мне кажется, что я очень близок. Однако я использовал этот точный код и поместил его внутри облачной функции ('Parse.Cloud.define (« sendPushToSpecificUser », функция (запрос, ответ) {« код, который вы предоставили »});), который я вызываю с устройства , Затем я получаю сообщение об ошибке и уведомление не отправляется. Любые идеи относительно того, почему это происходит? –

+1

Hi Tal Avissar, 1. Где использовать этот исходный код? 2. Если я хочу начать работу при запуске parse-сервера, как будет выглядеть код? 3. Нужна ли мне эта строка кода «due.app.listen (3000);? –

Смежные вопросы