1.获取当前应用程序中的集线器实例
public partial class Startup
{
Thread thread = null;
LogHelper.LogHelper _log = new LogHelper.LogHelper();
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
注册服务器端相应地址
//app.Map("/realtime/echo", map =>
//{
// map.UseCors(CorsOptions.AllowAll);
// map.RunSignalR<EchoConnection>();
//});
//注册服务器端相应路由
//app.MapSignalR<TrackerConnection>("/tracker");
//注册集线器路由
app.MapSignalR("/realtime", new HubConfiguration() { });
//启动线程发送消息通知
thread = new Thread(() =>
{
while (true)
{
Thread.Sleep(2000);
_log.WriteLine("thread2:");
//new EchoHub().Broadcast("后台自动发送消息");
try
{
//发送失败:Using a Hub instance not created by the HubPipeline is unsupported.
//new EchoHub().Clients.All.Message("后台自动发送消息");
//发送失败:Using a Hub instance not created by the HubPipeline is unsupported.
//DefaultHubManager manager = new DefaultHubManager(GlobalHost.DependencyResolver);
//var hub = manager.ResolveHub("EchoHub") as EchoHub;
//hub.Clients.All.Message("asdfasdf");
//发送消息成功
var hub = GlobalHost.ConnectionManager.GetHubContext<EchoHub>();
hub.Clients.All.Message("asdfasdf");
}
catch (System.Exception ex)
{
_log.WriteLine(ex.Message);
}
}
});
thread.Start();
}
}
关键代码:
//发送消息成功
var hub = GlobalHost.ConnectionManager.GetHubContext<EchoHub>();
hub.Clients.All.Message("asdfasdf");