【发布时间】:2018-02-21 03:25:48
【问题描述】:
我有一个使用 ASP.NET 零模板的项目。我已成功将 SignalR 集成到我的解决方案中,并且实时通知工作正常。我想要的是在我的解决方案中添加另一个集线器或扩展现有的 SignalR 集线器以添加更多内容。
在SignalR AspNetCore Integration 文档中,它说将以下内容添加到 Startup.cs 文件中:
app.UseSignalR(routes =>
{
routes.MapHub<AbpCommonHub>("/signalr"); // default hub
routes.MapHub<HitchNotification.HitchHub>("/hitchHub"); // my hub
});
然而,问题是我需要在客户端建立连接!在 SignalRAspNetCoreHelper.ts 中,它将 URL 设置为使用 '/signalr' 集线器(默认之一)。
export class SignalRAspNetCoreHelper {
static initSignalR(): void {
var encryptedAuthToken = new UtilsService().getCookieValue(AppConsts.authorization.encrptedAuthTokenName);
abp.signalr = {
autoConnect: true,
connect: undefined,
hubs: undefined,
qs: AppConsts.authorization.encrptedAuthTokenName + "=" + encodeURIComponent(encryptedAuthToken),
url: AppConsts.remoteServiceBaseUrl + '/signalr'
};
jQuery.getScript(AppConsts.appBaseUrl + '/assets/abp/abp.signalr-client.js');
}
}
如果我将'/signalr' 更改为'/hitchHub',它可以正常工作。但我想要两者都在我的应用程序中!我尝试为我自己的集线器创建一个类似于 SignalRAspNetCoreHelper.ts 的助手,并在 app.component.ts 中对其进行初始化:
ngOnInit(): void {
if (this.appSession.application && this.appSession.application.features['SignalR']) {
if (this.appSession.application.features['SignalR.AspNetCore']) {
SignalRAspNetCoreHelper.initSignalR();
HitchHubHelper.initHitchHub();
}
}
}
但似乎abp.signalr 不能有多个连接到不同的集线器。
所以,基本上我有两个问题:
有什么方法可以将我自己的集线器功能添加到默认的
AbpCommonHub中?这样,我可以简单地修改 abp.signalr-client.js 文件。如果上述情况不可行,我如何在
abp.signalr上拥有多个集线器以便在我的应用程序中的任何位置都可以访问?
【问题讨论】:
标签: angular typescript asp.net-core signalr aspnetboilerplate