Проект имеет интерфейс REST использует SignalR, а старые добрые веб-сокеты были добавлены для поддержки клиента, для которого нет клиентской библиотеки SignalR.
Независимо от того, оба они работают нормально. Как только я пытаюсь использовать их оба, вся связь через них обоих прекращается до тех пор, пока один из них не отключится.
SignalR добавляется в службы компоновщика в Program.cs вот так:
Код: Выделить всё
builder.Services.AddSignalR(options => {
options.EnableDetailedErrors = true;
});
< /code>
и веб -питания настраиваются так: < /p>
app.UseWebSockets();
app.Map("/ws", WebSocketHandler.HandleWebSocketConnection);
public static async Task HandleWebSocketConnection(HttpContext context)
{
if (!context.WebSockets.IsWebSocketRequest)
{
context.Response.StatusCode = 400; // Bad Request
await context.Response.WriteAsync("WebSocket request expected.");
return;
}
var clientId = Guid.NewGuid().ToString();
WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync();
Console.WriteLine($"Client connected: {clientId}");
try
{
await HandleClientMessagesAsync(webSocket);
}
finally
{
Console.WriteLine($"Client disconnected: {clientId}");
}
}
< /code>
Я бы не подумал, что это проблема, потому что под обложками на одном порте работает только один сервер веб -сокетов. Как оба эти могут быть включены на одном и том же веб -сервере без конфликта?
Подробнее здесь: https://stackoverflow.com/questions/793 ... pi-project