-
是否有任何方法可以将自己的hub功能添加到现有的默认AbpCommonHub中?这样我就可以简单地修改abp。信号器客户端文件
当然继承
AbpCommonHub
:
public class HitchHub: AbpCommonHub
{
// Ctor omitted for brevity
public async Task SendMessage(string message)
{
await Clients.All.SendAsync("getMessage", string.Format("User {0}: {1}", AbpSession.UserId, message));
}
}
更换轮毂:
// routes.MapHub<AbpCommonHub>("/signalr");
routes.MapHub<HitchHub>("/signalr");
-
如果以上不可能,我如何在abp上拥有多个集线器。信号器是否可以在我的应用程序中的任何位置访问?
以上并非不可能,但我将回答这个问题,以演示多个轮毂(用于角度)。
继承
AbpHubBase
:
public class HitchHub : AbpHubBase, ITransientDependency
{
public async Task SendMessage(string message)
{
await Clients.All.SendAsync("getMessage", string.Format("User {0}: {1}", AbpSession.UserId, message));
}
}
地图中心:
routes.MapHub<AbpCommonHub>("/signalr"); // No change
routes.MapHub<HitchHub>("/signalr-hitchHub"); // Prefix with '/signalr'
用法
这需要
Abp.AspNetCore.SignalR
v3.5.0-preview3
.
修改
SignalASPNetCoreHelper。ts
:
abp.signalr = {
autoConnect: true, // No change
connect: undefined, // No change
hubs: undefined, // No change
qs: AppConsts.authorization.encrptedAuthTokenName + "=" + ... // No change
remoteServiceBaseUrl: AppConsts.remoteServiceBaseUrl, // Add this
startConnection: undefined, // Add this
url: '/signalr' // Changed from: AppConsts.remoteServiceBaseUrl + '/signalr'
};
// Modify the following block
jQuery.getScript(AppConsts.appBaseUrl + '/assets/abp/abp.signalr-client.js', () => {
var hitchHub;
abp.signalr.startConnection('/signalr-hitchHub', function (connection) {
hitchHub = connection; // Save a reference to the hub
connection.on('getMessage', function (message) { // Register for incoming messages
console.log('received message: ' + message);
});
}).then(function (connection) {
abp.log.debug('Connected to hitchHub server!');
abp.event.trigger('hitchHub.connected');
});
abp.event.on('hitchHub.connected', function() { // Register for connect event
hitchHub.invoke('sendMessage', "Hi everybody, I'm connected to the chat!"); // Send a message to the server
});
});