Каждая публикация обрабатывается отдельно, но вы можете создать только один интервал и позволить ему обновить список описателей публикации:
const pingPongSubscribed = [];
const pingPongIntervalId = setInterval(() => {
pingPongSubscribed.forEach(handle => {
// ...
handle.added(COLLECTION_NAME, DOCUMENT_ID, payload);
});
}, 5000);
// ...
Meteor.publish('example', function () {
// ...
pingPongSubscribed.push(this);
this.onStop(() => {
pingPongSubscribed.splice(pingPongSubscribed.indexOf(this), 1);
});
});
Если вам нужно больше данных, просто сохраните их в pingPongSubscribed
. Имейте в виду, что он будет синхронизирован с точки зрения подключения к одному серверу, а несколько экземпляров сервера не синхронизированы.
Также рассмотрите возможность использования changed
. Каждое использование added
создает новый документ в памяти сервера и клиента. Таким образом, вы будете управлять только одним документом и соответствующим образом реагировать на изменения.