Я пытаюсь использовать SignalR с asp core 2.1 и angular 7. Но всякий раз, когда я пытаюсь его запустить, в консоли браузера выдается ошибка:
Я просто следовал основам, чтобы реализоватьПример ChatHub и попытался изменить его, но без исправления, и когда я искал ту же ошибку, я не нашел ничего, чтобы решить ее, так как каждое решение не работает для меня.
C # код в asp core
public void ConfigureServices(IServiceCollection services)
{
// rest of the code
/////////////////////////
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
.Build());
});
services.AddSignalR(hubOptions =>
{
hubOptions.EnableDetailedErrors = true;
hubOptions.KeepAliveInterval = TimeSpan.FromMinutes(1);
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// rest of the code
/////////////////////////
app.UseCors(builder =>
builder.WithOrigins("https://localhost:44365", "https://localhost:5001", "http://localhost:4200", "http://localhost:5000").AllowAnyHeader().AllowAnyMethod().AllowCredentials());
app.UseSignalR(route =>
{
route.MapHub<ChatHub>("/chathub");
});
}
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
Машинописный код в угловой службе
sendChatMessage(message: String) {
this._hubConnection.invoke('SendMessage', message);
}
private createConnection() {
this._hubConnection = new HubConnectionBuilder()
.withUrl('chathub',
{
skipNegotiation: true,
transport: signalR.HttpTransportType.WebSockets
})
.configureLogging(signalR.LogLevel.Information)
.build();
}
private startConnection(){
this._hubConnection
.start()
.then(() => {
this.connectionIsEstablished = true;
console.log('Hub connection started');
this.connectionEstablished.emit(true);
})
.catch(err => {
console.log('Error while establishing connection ',err);
});
}