信号R。无法到达 OnConnected()

SignalR. Cant reach OnConnected()

集线器代码

public class TestHub : Hub
    {
        public void Message(string message)
        {
                Clients.Group("testGroup").displayMessage(message);
        }
        public override Task OnConnected()
        {
            Groups.Add(Context.ConnectionId, "testGroup");
            return base.OnConnected();
        }
    }

Javascript 生成代理的代码

var myHub = $.connection.testHub;
myHub.on('message', this.displayMessage);

$.connection.hub.start();



function displayMessage(message) {
 console.log(message);
}

如果我执行上述操作,似乎 hub.start() 是 运行 正确的并且它 returns 某种形式的对象。但是当我在 OnConnected 中使用断点进行调试时,我从未命中。

有什么建议吗?

基本上,您可以调用集线器方法,但如果集线器上没有订阅,OnConnect 将不起作用。 这很奇怪,但这就是它的工作方式。

这样做:

var myHub = $.connection.testHub;

//add subscriptions
$.extend(myHub.client, {
    stupidLogicSignalR: function () {}
});

myHub.on('message', this.displayMessage);
$.connection.hub.start();

Here's一个类似的问题。 另外这个issue可以帮助

为订阅使用了其他语法

myHub.client.displayMessage = () => {console.log('message');};

通过以下方式在前端启用日志记录(在 var myHub = $.connection.testHub; 之后执行):

$.connection.hub.logging = true;

或将回调分配给 .start by:

$.connection.hub.start().done(function () {
console.log("connection started")
});