SignalR如何通过另一个服务器作为代理将客户端连接到服务器

时间:2019-02-28 10:42:24

标签: c# asp.net-core proxy signalr

我想通过my_public_server.com(ASP.NET核心Web应用程序)将SignlaR javascript浏览器客户端连接到my_private_api.com(RESTful核心API)。客户端不知道,并且不知道private_api.com存在,即通信过程如下:

browser <--sees only--  webapp  --makes actual SignalR request--> api
                      |        |
                      |--auth--|

除了授权请求外,Webb应用程序仅将连接中继到实际的后端。如何构造公共服务器(和私有API)?


更准确地说,如何修改“ Get started with SignalR app”结构

//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

0 个答案:

没有答案