我有2个ASP.NET Core Razor Web应用程序。每个应用程序都将使用SignalR与Web应用程序客户端和移动客户端进行通信。由于预期用途,我将两个Web应用程序都设置为集线器和客户端,其中客户端使用.NET SignalR客户端。 2个Web应用程序均具有以下内容:
static internal HubConnection Connection; // In the Startup class
public Startup(IConfiguration configuration)
{
Configuration = configuration;
Connection = new HubConnectionBuilder()
// Where the URL is for the OTHER web app
.WithUrl("https://localhost:44386/NotificationHub")
.Build();
}
每个项目在Hubs文件夹中还具有一个从Hub派生的NotificationHub类。
在每个应用程序的Startup ConfigureServices方法中,作为最后一个语句:
services.AddSignalR();
在每个应用程序的Startup Configure方法中,在调用UseMvc之前,我有以下内容:
app.UseSignalR(routes =>
{
routes.MapHub<NotificationHub>("/NotificationHub");
});
在每个NotificationHub类中,我都有:
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
因此,我不确定最初如何从一个客户端连接到集线器,也不确定我是否正确使用了URL。
答案 0 :(得分:0)
用于使用js客户端:
1)安装signalr npm:npm install @aspnet/signalr
2)在所需页面中添加参考
3)添加连接对象代码
const connection = new signalR.HubConnectionBuilder()
.withUrl("/NotificationHub")
.configureLogging(signalR.LogLevel.Information)
.build();
connection.start().catch(err => console.error(err.toString()));
4)调用您的require方法
connection.invoke("SendMessage", user, message).catch(err => console.error(err.toString()));
对于.Net客户端
1)安装nuget:Install-Package Microsoft.AspNetCore.SignalR.Client
2)
HubConnection connection = new HubConnectionBuilder()
.WithUrl("https://localhost:44386/NotificationHub")
.Build();
await connection.StartAsync();
await connection.InvokeAsync("SendMessage",
"user", "message");
您可以通过单击按钮或发送消息来开始连接
您可以在下面的链接中找到更多详细信息:
https://docs.microsoft.com/en-us/aspnet/core/signalr/introduction?view=aspnetcore-2.1