簡體   English   中英

如何從流星js中的另一個客戶端觸發客戶端事件

[英]How to trigger a client event from another client in meteor js

我有一個用於平板電腦的客戶端應用程序和一個用於筆記本電腦的客戶端應用程序。 這些應用程序位於客戶端文件夾中:分別是“平板電腦”和“顯示器”。 我的問題是,是否可以觸發從平板電腦應用到筆記本應用的事件? 因為我想同步切換一個分頁。

Meteor 中的典型模式是保存或更新兩個客戶端都訂閱的集合中的文檔,然后讓客戶端對新的或更新的值做出反應。

例如:

庫:

SharedState = new Mongo.Collection('sharedstate');

服務器:

Meteor.publish('shared',function(){
  return SharedState.find({ userId: this.userId });
});

客戶:

Meteor.subscribe('shared');

在創建事件的客戶端中:

SharedState.upsert(
  { userId: Meteor.userId() },
  { userId: Meteor.userId(), state: "foo" }
);

然后在您正在查找事件的客戶端中,使用Tracker.autorun (或者, observeChanges )來查看共享狀態是否已更改:

Tracker.autorun(function(){
  let state = SharedState.findOne({ userId: Meteor.userId() });
  if ( state === "foo" ){
    ... do your thing
  }
});

在這里,我假設您在平板電腦和筆記本電腦上運行的應用程序由同一用戶使用- 因此共享狀態的關鍵是userId 如果 OTOH 您在一個教室(一位老師,幾位學生)中共享狀態,那么您可能會使用諸如classroomId東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM