1

たとえば、Starcounter で宣言されたこのようなものがあるとします。

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

PuppetJS の更新ボタンを使用して DB から 1 行をリストしたページがあり、すべて正常に動作しています。

別のセッションから、または DB で直接値を変更した場合、クライアントに新しい値をプッシュすることによって、アクティブなクライアントに値を直接更新する方法はありますか?

*** 編集: TestPage.json.cs ファイルに以下を追加しました:

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

このプッシュは、他のセッションに直接更新します。これを行うためのより良い方法があるかどうかはまだ疑問です。

4

1 に答える 1

2

編集で提示したコードは、まさに次のとおりです。

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

それがすることは次のとおりです。

  • 変更をデータベースにコミットする
  • 実行中のすべてのセッションについて、そのセッションにTestPageインスタンスがアタッチされているかどうかを確認します
  • 上記が正の場合、バインドされたデータを再評価し、必要に応じてパッチを送信します

WebSocket を介した変更のプッシュの詳細については、http ://starcounter.io/guides/web/sessions/ を参照してください。

于 2016-04-25T06:45:24.400 に答える