也将此作为一个问题打开here https://github.com/SignalR/SignalR/issues/417但希望有人看到这个..
我有一个非常简单的集线器,它实现了 IConnected/IDisconnect。在一个独立项目中,该集线器经过测试效果非常好。
当我将其放入我的实际项目中时,我已经有一些其他集线器,添加它会导致没有可用的集线器(确认 /signalr/hubs 中没有显示任何集线器)。然后,我在此中心注释掉 IConnected/IDisconnect 并重新编译,它与其余部分一起显示。添加接口回来打破了这一切。
有没有人见过这个?是否缺少某些配置或其他什么?
public class ChatHub : Hub, IConnected, IDisconnect
{
public void Test(string message)
{
}
public System.Threading.Tasks.Task Connect(IEnumerable<string> groups)
{
this.Clients.onNewUserOnline(Context.ConnectionId);
return new Task(() => { });
}
public Task Reconnect(IEnumerable<string> groups)
{
this.Clients.onNewUserOnline(Context.ConnectionId);
return new Task(() => { });
}
public Task Disconnect()
{
this.Clients.onUserOffline(Context.ConnectionId);
return new Task(() => { });
}
}
这是类似问题的链接有没有办法获取 Signalr hub 组中的连接数? https://stackoverflow.com/questions/9979524/is-there-a-way-to-get-number-of-connections-in-signalr-hub-group
如果这没有帮助,您可以查看 SignalR 0.5.1 中新的连接状态内容
连接状态变化
SignalR 连接对于用户来说一直是一个黑匣子,这使得检测底层连接状态的变化变得困难。我们在 JavaScript 和 .NET 客户端中公开了一个新的 stateChanged 事件。这允许您监听状态变化并以不同的方式对其做出反应。下面是一个示例,如果连接进入重新连接状态并且 10 秒后未恢复,则会向用户显示一条消息:
var chat = $.connection.chat;
var timeout = null;
var interval = 10000;
chat.addMessage = function (msg) {
$('#messages').append('<li>' + msg + '</li>');
};
$.connection.hub.stateChanged(function (change) {
if (change.newState === $.signalR.connectionState.reconnecting) {
timeout = setTimeout(function () {
$('#state').css('backgroundColor', 'red')
.html('The server is unreachable...');
}, interval);
} else if (timeout && change.newState === $.signalR.connectionState.connected) {
$('#state').css('backgroundColor', 'green')
.html('The server is online');
clearTimeout(timeout);
timeout = null;
}
});
$.connection.hub.start();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)