建立代理集线器连接时不会触发SignalR OnConnected和On Dissconnected覆盖方法

时间:2019-03-22 07:31:36

标签: c# signalr

使用连接ID成功建立连接,但是未触发代理方法,我正在尝试跟踪活动用户的数量。

public class CounterHub : Hub// Proxy Hub
        {
            static long counter = 0;
            public override System.Threading.Tasks.Task OnConnected()
            {

                counter = counter + 1;
                Clients.All.UpdateCount(counter);// Client Proxy Method
                return base.OnConnected();
            }

            public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled)
            {
                counter = counter - 1;
                Clients.All.UpdateCount(counter);//Client proxy method
                return base.OnDisconnected(stopCalled);
            }
        }

Javasrcitp建立连接并调用代理客户端方法

 $

(function () {
                        var counterHub = $.connection.counterHub;
                        $.connection.hub.start().done(function () {
                            console.log("Connection Established" + $.connection.hub.id);

                        }).fail(function () {
                            console.log('Could not Connect!'); 
                        });


                        $.extend(counterHub.client, {
                            UpdateCount: function (count) {
                                console.log(count);
                            }
                        })


                        counterHub.client.UpdateCount = function (count) {
                            $("#counter").text(count);
                        }
                    });

1 个答案:

答案 0 :(得分:0)

需要在连接之前声明客户端方法。

$(function () {
    var counterHub = $.connection.counterHub;

    counterHub.client.UpdateCount = function (count) {
         $("#counter").text(count);
    }

    $.connection.hub.start().done(function () {
           console.log("Connection Established" + $.connection.hub.id);
    }).fail(function () {
           console.log('Could not Connect!'); 
    });

    $.extend(counterHub.client, {
        UpdateCount: function (count) {
        console.log(count);
        }
    })


  });

不知道您要使用$ .extend做什么,因为我从未用过这种方式。那可能还需要移动。