集线器代码
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()正确运行并返回某种形式的对象。但是,当我在OnConnected内部使用断点进行调试时,我从未点击过。
有什么建议吗?
答案 0 :(得分:3)
基本上,您可以调用集线器方法,但如果您没有集线器上的订阅,OnConnect将无法工作。 这很奇怪,但这就是它的工作方式。
这样做:
var myHub = $.connection.testHub;
//add subscriptions
$.extend(myHub.client, {
stupidLogicSignalR: function () {}
});
myHub.on('message', this.displayMessage);
$.connection.hub.start();
答案 1 :(得分:0)
使用订阅的其他语法
myHub.client.displayMessage = () => {console.log('message');};
答案 2 :(得分:0)
启用前端记录(在var myHub = $.connection.testHub;
之后执行):
$.connection.hub.logging = true;
或通过以下方式将回调分配给.start:
$.connection.hub.start().done(function () {
console.log("connection started")
});