2016-04-22 31 views
1

比方說我有這樣的事情在Starcounter在Starcounter DB中更新數據,將更新推送到活動會話?

[Database] 
public class User 
{ 
    public string Username; 
    public string Email; 
} 

聲明我列出從DB一行與PuppetJS的更新按鈕,一切工作正常的頁面。

如果我從另一個會話中更改值或直接在數據庫中更改值,是否有將值直接更新到任何通過將新值推送到客戶端而處於活動狀態的客戶端?

***編輯: 我添加下面我TestPage.json.cs文件:

void Handle(Input.Update action) 
    { 
     Transaction.Commit(); 
     Session.ForAll(s => 
      { 
       if (s.Data is TestPage) 
        s.CalculatePatchAndPushOnWebSocket(); 
      }); 
    } 

這推送更新直接到很好的其他會話。仍然想知道是否有更好的方法來做到這一點。

回答

2

,你已經在你的編輯提供的代碼是完全的路要走:

void Handle(Input.Update action) 
{ 
    Transaction.Commit(); 
    Session.ForAll(s => 
     { 
      if (s.Data is TestPage) 
       s.CalculatePatchAndPushOnWebSocket(); 
     }); 
} 

它所做的是:

  • 更改提交到DB
  • 每一個正在運行的session ,檢查該會話是否附有TestPage實例
  • 如果以上是肯定的,則重新評估綁定數據並在需要時發送補丁

有關更改WebSocket的更多信息,請訪問:http://starcounter.io/guides/web/sessions/