SignalR 客户端未连接
SignalR client not connecting
我有一个集线器如下:
public class MessagingHub : Hub
{
private static readonly IHubContext HubContext = GlobalHost.ConnectionManager.GetHubContext<MessagingHub>();
public static void ServerSendClaimNotice(Claim claim)
{
HubContext.Clients.All.showClaimNotice(claim);
}
public override Task OnConnected()
{
return base.OnConnected();
}
}
到目前为止,它专门用于将消息从 MVC 控制器发送到视图。
我的Startup
class中也有如下方法:
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
app.MapSignalR();
}
然后我有以下视图脚本:
var msgHub;
$(function() {
var msgHub = $.connection.messagingHub;
msgHub.client.showClaimNotice = function(claim) {
debugger;
displayClaimNotice(claim);
};
$.connection.hub.start()
.done(function() {
console.log('Now connected');
})
.fail(function() {
console.log('Could not connect');
});
});
在调用 $.connection.hub.start
时,我希望调用 OnConnected
方法,但事实并非如此。调用 ServerSendClaimNotice
时,客户端代码中什么也没有发生。我做错了什么?
您确定静态方法对信号器客户端调用有效吗?
这是一个假设(在文档中寻找验证):原样的静态方法将从集线器上下文外部使用(例如,您的后端进程、主机进程等)。我猜集线器不可用,因为没有 callable 方法(这可以解释,OnConnected
未被调用)。
能否尝试添加一个非静态方法,看看客户端是否可以连接成功?
编辑
也许我应该换个说法:可能是集线器代理不可用,因为在调用者的上下文中没有可调用的非静态方法。您能否添加一个非静态方法并检查是否正在连接到集线器?
我假设 js 代码有问题
$.connection.hub.start()
.done(function() {
console.log('Now connected');
})
.fail(function() {
console.log('Could not connect');
});
它应该看起来像:
$.connection.hub.start()
.done(function() {
console.log('Now connected');
});
$.connection.hub.start()
.fail(function() {
console.log('Could not connect');
});
我有一个集线器如下:
public class MessagingHub : Hub
{
private static readonly IHubContext HubContext = GlobalHost.ConnectionManager.GetHubContext<MessagingHub>();
public static void ServerSendClaimNotice(Claim claim)
{
HubContext.Clients.All.showClaimNotice(claim);
}
public override Task OnConnected()
{
return base.OnConnected();
}
}
到目前为止,它专门用于将消息从 MVC 控制器发送到视图。
我的Startup
class中也有如下方法:
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
app.MapSignalR();
}
然后我有以下视图脚本:
var msgHub;
$(function() {
var msgHub = $.connection.messagingHub;
msgHub.client.showClaimNotice = function(claim) {
debugger;
displayClaimNotice(claim);
};
$.connection.hub.start()
.done(function() {
console.log('Now connected');
})
.fail(function() {
console.log('Could not connect');
});
});
在调用 $.connection.hub.start
时,我希望调用 OnConnected
方法,但事实并非如此。调用 ServerSendClaimNotice
时,客户端代码中什么也没有发生。我做错了什么?
您确定静态方法对信号器客户端调用有效吗?
这是一个假设(在文档中寻找验证):原样的静态方法将从集线器上下文外部使用(例如,您的后端进程、主机进程等)。我猜集线器不可用,因为没有 callable 方法(这可以解释,OnConnected
未被调用)。
能否尝试添加一个非静态方法,看看客户端是否可以连接成功?
编辑
也许我应该换个说法:可能是集线器代理不可用,因为在调用者的上下文中没有可调用的非静态方法。您能否添加一个非静态方法并检查是否正在连接到集线器?
我假设 js 代码有问题
$.connection.hub.start() .done(function() { console.log('Now connected'); }) .fail(function() { console.log('Could not connect'); });
它应该看起来像:
$.connection.hub.start()
.done(function() {
console.log('Now connected');
});
$.connection.hub.start()
.fail(function() {
console.log('Could not connect');
});