0

UI に複数のグリッドがあり、 signalR を介して更新したいと考えています。変更がある場合は、対応するグリッドのみを更新し、その他のグリッドはそのまま残ります。グリッドごとに異なる接続を作成し、それに応じてクライアントごとに更新することは可能ですか? また、さまざまなクライアントの接続 ID も維持する必要があります。では、このシナリオを探し出す方法はありますか?? 解決策や提案を探しています。

サーバ側

public class RealTimeEndPoint : PersistentConnection
{
    //Create array to maiantain connections
    static List<string> connectedUserId = new List<string>();

    //Called when the first connection is made
    protected override Task OnConnected(IRequest request, string connectionId) 
    {
        return Connection.Broadcast("Connection " + connectionId + " connected");
    }

    //Called when connection is disconnected
    protected override Task OnDisconnected(IRequest request, string connectionId)
    {
        connectedUserId.Remove(connectionId + ":" + request.User.Identity.Name);
        return Connection.Broadcast("Connection " + connectionId + " disconncted");
    }

    //Sends a value to specified signal
    protected override Task OnReceived(IRequest request, string connectionId, string data)
    {
        connectedUserId.Add(connectionId + ":" + request.User.Identity.Name);
        return Connection.Send(connectionId, "Connection " + connectionId + " sent " + data);
    }
}

クライアント側

myGrid1.on('rowcollapse', function (event) {
            GridConnection.stop();
        });

        myGrid1.on('rowexpand', function (event) {
            var row = event.args.rowindex;
            var value = myGrid1.jqxGrid('getcellvalue', row, "Name");                
            GridConnection.start().done(function () {
                GridConnection.send("P" + value);
            });

私が必要とするのは、接続を拡張して開始し、signalR を介してデータを更新することですが、崩壊後は切断する必要があります。グリッドの数は複数になります。これが私の要点を明確にするのに役立つことを願っています。

4

1 に答える 1

0

あなたはこれのために私のライブラリを使うことができます

SignalR.EventAggregatorProxy

ナゲットを使ってインストール

Install-Package SignalR.EventAggregatorProxy

内部でハブと接続の詳細を処理するため、イベントをサブスクライブして公開するだけで済みます

設定方法については wiki を確認して ください https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki

セットアップが完了したら、javascript からのバックエンド イベントをリッスンするために必要な作業は次のとおりです。

ViewModel = function() {
   signalR.eventAggregator.subscribe(MyApp.Events.TestEvent, this.onTestEvent, this);
};

1 つの接続と 1 つのハブだけで、必要なイベントの数をリッスンできます

于 2013-08-02T10:56:06.787 に答える