0

signalRを使用する必要があるasp.net mvc 5アプリケーションを開発しています。ハブを作成し、ハブに接続できました。今、私が直面している主な問題は、サーバー側のメソッドをハブにマップする方法です。私にとって大きな助けとなる何かが私を助けることができるなら、私はsignalRでまったく新しいです。これが私のコードです:

HUB:

 [HubName("statusLog")]
public class StatusLogHub : Hub
{

    [HubMethodName("sendExportStatus")]
    public void SendExportStatus()
    {
        IHubContext context = GlobalHost.ConnectionManager.GetHubContext<StatusLogHub>();
        Clients.All.updateStatus();
    }
}

Repository : 

public class EmailStatusLogRepository
{
    EMailDBContext _ctx = new EMailDBContext();
//I need to show this lstEmailStatus list in real time.        
    public IEnumerable<EmailStatusLog> GetExportStatus()
    {
        var lstEmailStatus = _ctx.emailStatusLogs.Where(x => x.IsActive == true && x.Date ==    DateTime.Now.ToString()).ToList();
        return lstEmailStatus;
    }

}


Controller :

public ActionResult GetExportStatus()
    {
        EmailStatusLogRepository objEmailStatusRepository = new EmailStatusLogRepository();
        return PartialView("_exportedReportList", objEmailStatusRepository.GetExportStatus());
    }

View:

 $("#btnExportStatus").click(function () {

            $.ajax({
                url: '@Url.Action("GetExportStatus")',
                contentType: 'application/html ; charset:utf-8',
                type: 'GET',
                dataType: 'html'
            }).success(function () {
                var connection = $.hubConnection();
                var hub = connection.createHubProxy("statusLog");
                hub.on("updateStatus", function (statusUpdated) {
                    $('#hitCountValue').text(statusUpdated);
                });

            });
            // Declare a proxy to reference the hub.

        });


    function getExportStatus() {
        var tbl = $('#statusTable');
        $(function (result) {
            tbl.empty().append(result);
        }).error(function () {

        });
    };
4

1 に答える 1

1

CreateHubConnectionサーバー側の方法でハブ接続を作成したい場合は、次のようにする必要があります-

public void CreateHubConnection()
{
   StatusLogHub hub = new StatusLogHub ();
   hub.SendExportStatus();
}

ハブメソッドで、やりたいことを何でもしてください。これがあなたを助けることを願っています。

編集

そしてあなたのクライアント側で-

  • 最初に、次のようなすべての SignalR ライブラリを追加します。

    <script src="Scripts/jquery-1.6.4.min.js"></script>
    <script src="Scripts/jquery.signalR-2.2.0.min.js"></script>
    <script src="signalr/hubs"></script>
    

    そして、接続を作成し、クライアントメソッドを呼び出します-

    <script type="text/javascript">
    $(function () {
        var log = $.connection.statusLog;
        $.connection.hub.start();
        //here we are calling the hub client method
        log.client.updateStatus = function () {
            //do whatever you want to
        };
    });
    </script>
    
于 2016-03-16T04:08:28.260 に答える