我有一个控制台应用程序连接到SignalR Hub并发送消息等。工作得非常好。
今天,当我启动我的控制台应用程序时,我忘了 - 也 - 启动我的SignalR集线器(因此没有集线器,活动并接受/发送消息)。
当然,我遇到了一个低级连接错误:
服务器正在积极拒绝连接等......
有没有办法可以检查Hub是否在线,活动并接受连接?或者是使用try / catch的唯一方法,并假设任何捕获,它是脱机的?
这是我的示例代码:
_hubConnection.Start().ContinueWith(task =>
{
if (task.IsFaulted)
{
WriteLine(
string.Format(" !!! There was an error opening the connection:{0}",
task.Exception.GetBaseException()),
ConsoleColor.Red);
}
else
{
WriteLine(" * Connected to the Hub @ http://localhost:80");
}
}).Wait();
干杯!
答案 0 :(得分:1)
如果您使用持久连接,则可以更轻松地找出它是否已连接。如果你想使用Hub而不是Persistent Connection,我不知道如何检查。
下面的示例使用持久连接在start()之前检查连接。
持久连接
public class HubPersistentConnection : PersistentConnection
{
protected override Task OnConnected(IRequest request, string connectionId)
{
return Connection.Send(connectionId, "It's connected.");
}
// Override more method here
}
<强>的jQuery 强>
$(function () {
var _hubConnection= $.connection('/echo');
_hubConnection.received(function (data) {
//Do something
});
_hubConnection.start().done(function () {
//Do something
});
});
在启动文件中映射持久连接
app.MapSignalR<HubPersistentConnection>("/echo");