Метеор - отправка сообщения всем клиентам

Я создаю приложение, используя Meteor.js с flashMessage для отображения информативных сообщений для пользователя. В настоящее время сообщение привязано к событиям кликов отдельных пользователей, но я хочу отобразить это сообщение для всех пользователей.

Есть ли способ использовать Meteor и flashMessages для этого? Или нужно использовать другой пакет?

Ваше здоровье.


person Paul Deng    schedule 11.08.2015    source источник


Ответы (1)


Вероятно, есть несколько способов, но вот один из них, использующий набор сообщений:

Общий:

Messages = new Meteor.Collection('messages');

Клиент:

if (Meteor.isClient()) {
    Meteor.subscribe('messages');
    var msgs = Messages.find();
    msgs.observeChanges({
        added: function(id, obj) {
            FlashMessages.sendInfo(obj.text);
        }
    });
}

Сервер:

if (Meteor.isServer()) {
    Meteor.publish('messages', function() {
        return Messages.find();
    });
}

А потом просто вставить сообщения типа {text: "my text"} в коллекцию Messages и они должны отображаться на всех клиентах.

PS: Через некоторое время вы можете снова удалить вставленные сообщения, иначе любому вновь прибывшему клиенту будут показаны все прошлые сообщения. В качестве альтернативы вы можете просто подписаться на последние сообщения.

person Christian Fritz    schedule 11.08.2015