HTTP 和 SignalR

HTTP and SignalR

我最近正在学习 .Net 中的网络套接字,并且刚刚发现 SignalR 就使用何种连接的抽象而言似乎好得令人难以置信,而且似乎有一些不同的信号器客户端很棒的语言。

在我当前的项目中,不同的资源通过 RESTful API 公开,根据我对 websockets 的理解,客户端需要通过 HTTP [=18= 升级到 web 套接字连接]. signalR 会处理所有这些握手吗?

如果初始 request/response 来自 GET 请求以检索特定资源,但他们选择升级到套接字连接,除了表示确认的响应之外,服务器是否给他们任何类型的响应打开一个网络套接字连接,或者握手是在该特定资源的信息实时更新之前发生的吗?

您认为 signalR 是否具有可扩展性,而不是通过像 STOMP 这样有大量客户端库的协议来实现?

你把事情搞得太复杂了。一个典型的使用signalr的例子是:

  1. 一个 html 文件使用 JavaScript 在页面加载时连接到信号器服务器。我们称之为信号器客户端。

  2. 用 c# 编写的信号服务器。它可以是 winform 或控制台或服务。

  3. signalr服务器可以调用位于同一服务器甚至不同服务器的任何dll、web服务或webapi。

然后,客户端可以调用信号器服务器中定义的任何函数。服务器可以为特定客户端或客户端组调用客户端中定义的任何函数。

此外,客户端 x 也可以调用客户端 y 函数。

您实际上可以忘记 Web 套接字,signalr 选择最适合您的传输协议。如果它在服务器和客户端都可用,它将选择 Web 套接字。