SignalR:服务器如何建立与客户端的连接?

Posted

技术标签:

【中文标题】SignalR:服务器如何建立与客户端的连接?【英文标题】:SignalR: how Server can establish connection to Client? 【发布时间】:2017-05-11 10:43:18 【问题描述】:

有没有可能实现这种逻辑:

服务器与客户端建立连接。 那么客户端使用这个连接向服务器发送请求/响应?

这是一对 C# 对:客户端和服务器应用程序。

信号R?网络套接字?

【问题讨论】:

什么叫客户端和服务器?根据网络层,它可以有不同的定义。您可以让客户端 PC 使用服务器应用程序,并让服务器 PC 成为客户端应用程序。所以一个是PC网络层,另一个是应用层。 你说得对,可以描述为:App1(通过http)连接到App2,然后App2使用这个连接向App1发送请求。 【参考方案1】:

在 SignalR 中,客户端应用可以连接到服务器上的 SignalR 集线器。连接后,客户端应用程序可以调用服务器上 SignalR Hub 中定义的方法,服务器可以使用 SignalR 调用客户端上的方法。此示例中的客户端应用程序可以是在网页中运行的 javascript,也可以是 .NET 客户端。

请注意,服务器无法启动从 SignalR 集线器到客户端的连接。客户端应用程序将始终必须启动连接。

【讨论】:

对于您的后一点,文档中是否有一个链接表明有关客户端需要建立连接? 这就是 SignalR 的构建方式。无论如何,大多数客户端都在防火墙后面,并在路由器上完成网络地址转换。作为一个思想实验,服务器如何通过 NAT 访问防火墙后面的特定浏览器?但是随着客户端发起连接,防火墙和 NAT 就不是问题了。

以上是关于SignalR:服务器如何建立与客户端的连接?的主要内容,如果未能解决你的问题,请参考以下文章

如何从SignalR客户端端确定服务器断开连接

检测来自客户端的SignalR中丢失的连接

SignalR 设计理念

如何在WebSocket的服务器侧检测客户端的断开连接

利用SignalR创建即时消息

SignalR