Meteor - Bagaimana cara mengarahkan pengguna ke halaman secara otomatis ketika data berubah

Saya sedang menulis aplikasi Meteor yang mengambil data eksternal dari mesin (pikirkan IoT) dan menampilkan banyak bagan, grafik, dll. Sejauh ini bagus. Ada berbagai halaman dalam aplikasi (sejauh ini satu halaman per jenis grafik). Sekarang saat data dimasukkan secara "real-time", ada situasi (normal) di mana "kumpulan" data disetel ulang sepenuhnya. Yaitu. semua data sudah tidak valid. Ketika ini terjadi, saya ingin mengarahkan pengguna kembali ke halaman "Beranda" di mana pun mereka berada (kecuali halaman beranda).

Saya berharap menjadikan ini item "global", tetapi juga tidak ingin terlalu banyak biaya tambahan. Saya perhatikan bahwa iron:router (yang saya gunakan) memiliki metode onData() tetapi tampaknya agak -- overhead tinggi -- karena hanya satu bagian data yang menunjukkan reset.

Karena setiap halaman agak "independen" dan pengguna dapat tetap berada di halaman untuk waktu yang lama (grafik diperbarui secara otomatis seiring perubahan data yang mendasarinya), saya bahkan tidak yakin iron:router adalah pendekatan terbaik.

Ini adalah Meteor 1.0.X BTW.

Hanya mencari cara Meteor yang "tepat" untuk menangani ini. Saya dapat memberi tanda centang pada logika tampilan ulang setiap halaman, tetapi menurut saya pendekatan yang lebih abstrak (baca: global) akan lebih ramah jangka panjang (jadi jika kita menambahkan lebih banyak halaman grafik secara otomatis masih berfungsi) ..

Terima kasih!


person sjmcdowall    schedule 15.05.2015    source sumber


Jawaban (1)


Ini adalah pekerjaan untuk cursor.observeChanges http://docs.meteor.com/#/full/observe_changes Siapkan koleksi yang diserver sebagai "reset notifikasi" yang disiarkan ke semua pengguna saat notifikasi baru dimasukkan.

Pada Klien:

criteria = {someCriteria: true};
query = ResetNotificationCollection.find(criteria)
var handle = query.observeChanges({
  added: function (id, user) {
    Router.go('home');
  }
});

Kapan pun penyetelan ulang terjadi:

notification = { time: new Date(), whateverYouWantHere: 'useful info' }
ResetNotificationCollection.insert notification

Saat dimasukkan, semua klien yang mengamati perubahan pada koleksi akan merespons pesan DDP kecil yang efisien.

person Justin    schedule 15.05.2015