mannaro
@mannaro
Умею профессионально гуглить

Асинхронный код на сервере Meteor?

Привет! Начал делать первое приложение на Метеоре. Сразу решил выйти за грани обычных сайтов-визиток.
На серверной части лежит некое подобие демона - код, который должен крутиться постоянно и что-то делать (например, получать сообщения от VK API через long polling).
При попытках совершить HTTP.post у меня вываливается ошибка, мол Meteor code must always run within a Fiber. Try wrapping callbacks that you pass to non-Meteor libraries with Meteor.bindEnvironment.
Прогуглил, ничего толкового не нашел (и да, я видел SO).

Подскажите, где почитать про асинхронный код на сервере или верный путь написания подобного.

this.World = function() {
  this.vk = new VK({ appId: 777, mode: 'oauth' });
  this.vk.token = '#token';

  this.viewFriends(5);
  this.listenMessages();
};

this.World.prototype = {
  viewFriends: function(time) {
    var vk = this.vk;

    setInterval(function() {
      var list = vk.request('friends.getRequests', { extended: 0 }, function(data) {
        data.response.forEach(function(id) {
          vk.request('friends.add', { user_id: id }, function() {
            vk.request('messages.send', {
              user_id: id,
              message: 'Привет, новый друг!'
            }, function(res) {
              console.log(res);
            })
          });
        });
      })
    }, 1000 * 60 * time);
  },
  listenMessages: function() {
    var vk = this.vk;

    vk.request('messages.getLongPollServer', {}, function (data) {
      data = data.response;
      var url = ['http://', data.server, '?act=a_check&key=', data.key, '&ts=', data.ts, '&wait=25&mode=2']

      HTTP.post(url.join(''), Meteor.bindEnvironment(function(err, data) {
        console.log(123);
      }));
    });
  }
}
  • Вопрос задан
  • 431 просмотр
Решения вопроса 1
mannaro
@mannaro Автор вопроса
Умею профессионально гуглить
Начал использовать либу node-sync.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@achirkof
Неплохо рассказано тут.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы