信号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")
});
集线器代码
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")
});