Я бы хотел подключить клиент браузера JavaScript SignlaR через my_public_server.com
(основное веб-приложение ASP.NET) к my_private_api.com
(основное API RESTful).Клиент не знает и не знает, что private_api.com существует, т. Е. Общение происходит следующим образом:
browser <--sees only-- webapp --makes actual SignalR request--> api
| |
|--auth--|
Веб-приложение, помимо авторизации запроса, просто передает соединение с фактическим бэкэндом.Как я могу структурировать публичный сервер (и частный API)?
Точнее, как я могу изменить структуру " Начало работы с приложением SignalR "
//client stays same
var connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();
connection.on("ReceiveMessage", function (user, message) {
alert(message);
});
connection.start();
// web server
public class ChatHub : Hub
{
public void SubsrcibeToApiGetMessages() { /*???*/ }
//instead of
//public async Task SendMessage(string user, string message)
//{
// await Clients.All.SendAsync("ReceiveMessage", user, message);
//}
}
// api
public class ChatHub : HubController<ChatMessage>
{
[HttpGet("/v1v1/messages")]
public IEnumerable<Message> Get()
{
// some implementation
}
}
чтобы клиент подписывался на концентратор WebApp, но вместо этого контролировал GET my_private_api.com/v1/messages
под капотом?