0

SignalR を使用して、Azure Web サイトに接続されているクライアントにメッセージを送信する Windows Server 2012 仮想マシン上の Azure クラウド サービスに格納されている Web サービスに取り組んでいます。メッセージを送信する SignalR のパフォーマンスをテストするために、クライアントに送信されるさまざまなメッセージをシミュレートする特別なエンドポイントを設計しました。

エンドポイントにアクセスすると、400 個の定義済みイベント オブジェクトを含むリストが繰り返されます。各オブジェクトはデータベースに保存され、オブジェクトが保存された後、メッセージがクライアントに送信されます。合計で 400 のメッセージが送信されます。最初のメッセージは非常に速く到着しますが、後続のメッセージはより遅く配信され、接続されているすべてのクライアントに対して最大 20 分かかります (現在、Firefox で Web サイトを開いた 5 つのクライアントのみでテストしています。すべてのメッセージを受信するには時間がかかります)。

メッセージを送信するために、イベントがデータベースに保存された後に使用する関数は次のようになります。

    public void SendEvent(string deviceId, Events event)
    {
        Connection conn = new Connection(url + "/Index");
        try
        {
            conn.Start().Wait();
            DevicesDao devicesDao = new DevicesDao();
            ClustersDao clustersDao = new ClustersDao();
            RegionsDao regionesDao = new RegionsDao();
            Devices device= devicesDao.GetDevice(deviceId);
            Clusters cluster = clustersDao.GetCluster(device.ClustersClusterId);
            List<Devices> devices = cluster.Devices.ToList();
            Regions region = regionsDao.GetRegionsById(cluster.RegionsRegionId);
            Pin pin = new Pin(device.Latitude, device.Longitude, event.CurrentDate, event.IMax, event.AMax, device.UniqueId, device.Alias, device, cluster, region);
            List<Pin> list = new List<Pin>();
            list .Add(pin);
            var json = new JavaScriptSerializer().Serialize(list);
            conn.Send(json).Wait();
        }
        catch (Exception ex)
        {
            Debug.WriteLine("Error " + ex.Message + " \n Inner Exception " + ex.InnerException + " \n Stack Trace " + ex.StackTrace);
        }
    }

Javascript クライアントでは、次のようなメッセージを受け取ります。

connection = $.connection('/Index');
connection.received(function (data) {
    if (isSismosShown) {
            setPoints(data);
    }
});

connection.start().done({transport: 'longPolling'}, function () {
    console.log('connection ready');
});

Web サービスが Azure に格納されているため、SignalR ページからパフォーマンス チューニングを試すことができるかどうかわかりません。Azure を使用した経験はあまりありません。Azure の Web サービスからメッセージが送信される速度を改善するには、どのようなオプションがありますか?

4

0 に答える 0