首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

具有ASP.NET核心的SignalR不使用websockets,而是使用长轮询

SignalR是一个开源的实时通信库,它可以在客户端和服务器之间建立持久性的连接,实现实时的双向通信。SignalR可以在多种平台和编程语言中使用,包括ASP.NET核心。

在默认情况下,SignalR使用WebSockets作为其传输协议,因为WebSockets提供了低延迟、高效的双向通信。然而,并非所有的环境都支持WebSockets,特别是在一些旧版本的浏览器或网络环境中。

当环境不支持WebSockets时,SignalR可以自动降级到其他传输协议,如长轮询(Long Polling)。长轮询是一种模拟实时通信的技术,它通过客户端定期向服务器发送请求,服务器在有新消息时立即响应,否则保持连接处于挂起状态,直到有新消息或超时。

长轮询虽然不如WebSockets效率高,但在不支持WebSockets的环境下仍然可以实现实时通信。它可以通过减少请求的频率和数据量来降低对服务器的压力,并且在大多数情况下仍然能够提供良好的用户体验。

对于ASP.NET核心的SignalR,如果不想使用WebSockets而是使用长轮询,可以通过配置SignalR的传输选项来实现。具体来说,可以在Startup类的ConfigureServices方法中添加以下代码:

代码语言:csharp
复制
services.AddSignalR()
    .AddJsonProtocol(options =>
    {
        options.PayloadSerializerOptions.PropertyNamingPolicy = null;
    })
    .AddMessagePackProtocol()
    .AddAzureSignalR()
    .AddStackExchangeRedis(options =>
    {
        options.Configuration = "redis-connection-string";
    })
    .AddAzureSignalR(options =>
    {
        options.ConnectionString = "azure-signalr-connection-string";
    })
    .AddAzureSignalR(options =>
    {
        options.AccessTokenProvider = (request) =>
        {
            // 自定义访问令牌提供程序
            return Task.FromResult("access-token");
        };
    })
    .AddAzureSignalR(options =>
    {
        options.ClaimsProvider = (request) =>
        {
            // 自定义声明提供程序
            return new[]
            {
                new Claim(ClaimTypes.NameIdentifier, "user-id"),
                new Claim(ClaimTypes.Name, "user-name")
            };
        };
    });

上述代码中,通过调用AddSignalR方法来添加SignalR服务,并通过AddJsonProtocol、AddMessagePackProtocol、AddAzureSignalR、AddStackExchangeRedis等方法配置不同的传输选项。

需要注意的是,以上代码中的示例配置了多个传输选项,包括使用JSON和MessagePack作为消息序列化协议,使用Azure SignalR和StackExchange.Redis作为后端传输,以及自定义访问令牌提供程序和声明提供程序。

关于SignalR的更多信息和详细配置,请参考腾讯云的SignalR产品文档:SignalR产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SignalR 项目介绍

它提供了一些前景极为光明的功能,而这些功能正是 .NET Framework 当前不曾具有的,并且是越来越多的开发者所需要的。...一般情况下,SignalR会使用Javascript的长轮询( long polling),实现客户端和服务端通信。在WebSockets出现以后,SignalR也支持WebSockets通信。...当然SignalR也使用了服务端的任务并行处理技术以提高服务器的扩展性。 任何一个技术的出现都是为了解决特定的问题。SignalR也不例外。我们知道网站开发中最长见到的一个功能就是在线聊天室。...WebSockets这个技术的出现,很好地解决了这个问题,恰恰支持可以主动推送消息,SignalR 支持WebSockets。...我们可以看到未来网络应用中会大量出现自己吃WebSockets的程序,而SignalR应该也会广泛在ASP.NET 网站中出现。

1.3K100

ASP.NET Core基于SignalR实现消息推送实战演练

3)、一句话总结今天我们实现的目标? 如何在ASP.NET Core中使用SignalR技术来实现服务端向客户端实时推送消息。 废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。...在Web网页与服务器端间建立Socket连接,当WebSockets可用时(即浏览器支持Html5)SignalR使用WebSockets,当不支持时SignalR将使用长轮询来保证达到相同效果。...四、总结 SignalR主要应用场景 它出现的主要目的实现服务器主动推送(Push)消息到客户端(PC、Web、移动App),这样客户端就不必重新发送请求或使用轮询技术来获取消息。...3)、一句话总结今天我们实现的目标? 如何在ASP.NET Core中使用SignalR技术来实现服务端向客户端实时推送消息。 废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。...在Web网页与服务器端间建立Socket连接,当WebSockets可用时(即浏览器支持Html5)SignalR使用WebSockets,当不支持时SignalR将使用长轮询来保证达到相同效果。

4K10
  • 【ASP.NET Core 基础知识】--前端开发--使用ASP.NET Core和JavaScript进行通信

    三、使用SignalR进行实时通信 3.1 SignalR概述 SignalR是一个开发人员可以使用的ASP.NET库,用于在服务器端和客户端之间建立实时双向通信。...SignalR的设计旨在处理不同网络连接的细微差异,例如WebSockets、Server-Sent Events(SSE)或长轮询(long polling),以提供最佳的实时通信体验。...自适应传输:SignalR会自动检测客户端和服务器之间的连接状态,并根据连接的类型(如WebSockets、SSE、长轮询等)选择最佳的传输方式。这样可以确保在不同网络环境下的最佳性能和稳定性。...Transport Layer:SignalR支持多种传输方式,如WebSockets、Server-Sent Events(SSE)、长轮询等。传输层负责处理客户端和服务器之间的实际数据传输。...它提供了一种持久连接,允许客户端和服务器之间进行全双工通信,而不需要使用传统的HTTP轮询或长轮询技术。

    29900

    SignalR简介

    什么是SignalR? ASP.NET SignalR是ASP.NET开发人员的库,它简化了向应用程序添加实时Web功能的过程。...每当用户刷新网页以查看新数据,或者页面实现长轮询以检索新数据时,它是使用SignalR的候选。示例包括仪表板和监视应用程序,协作应用程序(如同时编辑文档),作业进度更新和实时表单。...WebSocket是SignalR的理想传输,因为它可以最高效地使用服务器内存,具有最低的延迟,并且具有最底层的功能(如客户端和服务器之间的全双工通信),但它也具有最严格的要求:WebSocket要求服务器使用...长轮询不会创建持久连接,而是轮询服务器并保持打开的请求,直到服务器响应,此时连接关闭,并立即请求新连接。这可能会在连接重置时引入一些延迟。 有关哪些配置支持什么传输的详细信息,请参阅支持的平台。...运输选择过程 以下列表显示SignalR用于决定使用哪个传输的步骤。 如果浏览器是Internet Explorer 8或更早版本,则使用长轮询。

    2.4K20

    ASP.NET SignalR 2.0入门指南介绍SignalRSignalR和WebSocket传输和回滚HTML5 传输协议Comet transports传输协议选择过程监测传输指定传输协议连接

    介绍SignalR ASP.NET SignalR 是一个为 ASP.NET 开发人员的库,简化了将实时 web 功能添加到应用程序的过程。...SignalR可用于任何你想添加实时Web功能到ASP.NET应用程序的情形,聊天室是一个常用的例子,用户可以刷新Web页面来获得新的数据,或者页面使用一个长轮询来取回数据,这都是SignalR可以应用的场景...AJAX长轮询(Ajax long polling),长轮询不创建持久的连接,取而代之的是 直到服务器另一端有反馈,在向开放的服务器发送请求,此时需要马上建立新的链接 传输协议选择过程 下面列表显示了...SignalR选择传输协议的过程: 1.如果浏览器是IE8或者更老的版本,使用长轮询; 2.如果配置了JSONP(当连接开始的时候设置jsonp参数为true),使用长轮询; 3.如果正在创建跨域的连接...,使用持久型框架; 7.如果持久型框架也失败,使用长轮询。

    2K60

    在ASP.NET 5中使用SignalR

    那么如何在ASP.NET 5的Web应用中使用SignalR 3呢,下面就简单讲解一下步骤: 1,不用说,一开始就是新建一个ASP.NET 5的Web应用程序项目 2,新建成功后。...在Hubs文件夹中添加一个名为ChatHub的类,并继承Microsoft.AspNet.SignalR.Hub。 5,理论上,如果你只打算从服务端往客户端推送消息的话,Hub类里面可以不写任何东西。...SignalR的连接通过日益流行的WebSockets API完成,而如果WebSockets无法使用,它会透明地回落为长轮询技术(long-polling technique)。...如果开发人员想使用Signal,需要在客户端层使用像jQuery的JavaScript框架,并在服务端层使用.NET代码编写应用和服务。...SignalR具有多种编程模型(PersistentConnections 和Hubs),它为开发人员提供了连接、消息接收群以及事件处理器的不同层次的访问。

    3.3K100

    ASP.NET Core基于WebSocket实现消息推送实战演练

    一、课程介绍 很多网站为了实现推送技术,所用的技术都是 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。...如何在ASP.NET Core中使用WebSocket技术来实现服务端向指定的客户端实时推送消息。 废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。...四、总结 在ASP.NET Core中对于大多数应用程序实现实时通讯的花,现在我们建议使用 SignalR,而不是原始 WebSocket。...并且在大多数情况下,与使用原始 WebSocket 相比,SignalR 没有显著的性能缺点。...ASP.NET Core SignalR 是一个库,可用于简化向应用添加实时 Web 功能,它会优先尽可能地使用 WebSocket技术。

    4.2K10

    SignalR

    SignalR是一个继承的客户端与服务器库,基于浏览器的客户端和基于ASP.NET的服务器组件可以借助它来进行双向多步对话,换句话说,该对话可不受限制的进行单个无状态请求/响应数据交换;它将继续,直到明确关闭...一般情况下,SignalR会使用JS的长轮询(long polling),实现客户端和服务端通信。在WebSockets出现以后,SignalR也支持WebSockets通信。...当然SignalR也使用了服务端的任务并行处理技术以提高服务器的扩展性。...ASP.NET MVC的Web API要强多了,更重要的是,它可以在Web Form使用   SignalR内的客户端库(.NET/JS)提供了自动管理的能力,开发人员只需要直接使用SignalR的Client...Library即可,同时它的JS库和JQuery完美整个,因此能直接与像JQuery或Knockout.js一起使用 SignalR内部两类对象:     1.Persistent Connection

    1K20

    实时通信技术大乱斗

    长轮询是轮询的一种高级形式,可满足实时通信的需要。 客户端向服务器发出信息请求,服务器hold请求,直到发生值得关注的事情(或请求即将超时)。...这样确保客户端/服务器具有持续的Comet请求以接受实时响应。 长轮询和轮询比起来,明显减少了很多不必要的http请求次数,相比之下节约了资源。长轮询的缺点在于,连接挂起也会导致资源的浪费。...SSE很大程度上是从服务器到客户端的定向推送,客户端使用EventSource对象(HTML5标准)捕获来自服务器的流式通知 WebSockets 你首次去国外旅行,一旦与对方确认了语言,后续沟通就无障碍...SignalR使用服务器端集线器的概念来帮助已连接客户端的实时通信和管理。服务器和客户端可以无缝地相互调用方法,这种交互方法是强类型的。...虽然默认使用基于文本的JSON格式,但SignalR还支持Messagepack协议-(二进制数据序列化/反序列化),以提高效率。

    99010

    初识SignalR~仿QQ即时聊天(群发,单发)(Web,WPF等Demo演示)【上】

    +++++++++++++++++++++ 步入正轨: 第一个阶段: 1.什么是ASP.NET SignalR?...WebSockets是Html5提供的新的API,可以在Web网页与服务器端间建立Socket连接,当WebSockets可用时(即浏览器支持Html5)SignalR使用WebSockets,当不支持时...2.可以使用ASP.NET SingalR做什么? SignalR 将与客户端进行实时通信带给了ASP .NET 。当然这样既好用,而且也有足够的扩展性。...以前用户需要刷新页面或使用Ajax轮询才能实现的实时显示数据,现在只要使用SignalR,就可以简单实现了。 最重要的是您无需重新建立项目,使用现有ASP .NET项目即可无缝使用SignalR。...再次验证最上面说的,端口不固定 ?

    2.4K60

    常见的Web实时消息交互方式和SignalR

    ) 长轮询是对轮询的改进,客户端通过请求连接到服务器,并保持一段时间的连接状态,直到消息更新或超时才返回Response并中止连接,可以有效减少无效请求的次数。...同时,SignalR提供了非常良好的Api以供远程调用(RPC) 浏览器中的js代码。 接下来,看看SignalR的传输方式和通信模型,这是SignalR的核心所在。...,并且符合以下条件(以下不满足任一条则使用长轮询) (1).客户端支持CORS (2).客户端支持WebSocket...用于指定传输方式的字符串常量定义如下: webSockets foeverFrame serverSentEvents longPolling 2.4 自动管理传输方式 不指定传输方式时,SignalR...Web 应用 SignalR GitHub ASP.NET MVC 使用 SIGNALR 实现推送功能(HUBS 在线聊天室)

    3.3K50

    ASP.NET SignalR2持久连接层解析

    一.ASP.NET SignalR概述:     谈到ASP.NET SignalR大多数人应该会比较的熟悉,因在我们的mvc项目中,使用到ASP.NET SignalR的地方还是比较多的。    ...任何时候用户刷新网页,看看新的数据或页面实现长轮询来获取新的数据,它是使用SignalR的候选人。示例包括仪表板和监视应用程序,协作应用程序(如同时编辑文档),作业进度更新和实时表单。    ...(以上描述摘自MSDN)    上面介绍了ASP.NET SignalR的一些基本概念和操作,接下来看一下ASP.NET SignalR的抽象层,由底层向上以此为:Internet协议,传输(WebSockets...,Server-SentEvents,foreverFrame,长轮询),持久连接层,Hub层。...二.ASP.NET SignalR持久连接层服务端核心对象方法解析:     ASP.NET SignalR中的每一个持久层都可以通过某一个URL从外部进行访问。

    2.6K90

    【译】.NET Core 3.0 Preview 3中关于ASP.NET Core的更新内容

    运行时编译 Worker服务模板 gRPC模板 Angular模板已更新为Angular 7 SPA认证 SignalR与Endpoint路由集成 SignalR Java客户端支持长轮询 其他详细信息和已知问题...Razor组件在HTML中是完全呈现的。 Razor类库中的Razor组件 现在可以将Razor组件添加到Razor类库中,并使用Razor组件从ASP.NET核心项目引用它们。...它旨在支持ASP.NET Core的生产力功能,如日志记录,DI,配置等,而不承载任何Web依赖项。 ? 在接下来的几天里,我们将发布一些博客文章,提供更多关于使用Worker模板入门的练习。...客户端的长轮询 我们向Java客户端添加了长轮询支持,这使它能够在不支持WebSockets的环境中建立连接。...这也使您能够在客户端应用程序中专门选择长轮询传输。 gRPC 模板 这个预览版引入了一个用ASP.NET Core构建的gRPC服务的新模板。

    22.7K10

    SignalR介绍简单示例教程入门版

    WebSockets是HTML5提供的新的API,可以在Web网页与服务器端间建立Socket连接,当WebSockets可用时(即浏览器支持Html5)SignalR使用WebSockets,当不支持时...以前用户需要刷新页面或使用Ajax轮询才能实现的实时显示数据,现在只要使用SignalR,就可以简单实现了。 最重要的是您无需重新建立项目,使用现有ASP .NET项目即可无缝使用SignalR。...优点:实现最为简单,配置简单,出错几率小 缺点:每次都是一次完整的http请求,易延迟,有效请求命中率少,并发较大时,服务器资源损耗大 长轮询(long polling) 长轮询是对轮询的改进,客户端通过请求连接到服务器...同时,SignalR提供了非常良好的Api以供远程调用(RPC) 浏览器中的js代码。接下来,看看SignalR的传输方式和通信模型,这是SignalR的核心所在。...,并且符合以下条件(以下不满足任一条则使用长轮询) (1).客户端支持CORS (2).客户端支持WebSocket (3).服务器端支持WebSocket 2.不配置使用JSONP,连接不跨域并且客户端和服务器端都支持

    2.3K40

    【JS】1699- 重学 JavaScript API - WebSockets API

    如何使用 WebSockets API WebSockets API 的使用相对简单,只需要几个基本步骤: 「建立 WebSocket 连接」 在客户端代码中,使用 JavaScript 创建一个 WebSocket...4.2 优缺点 WebSockets API 具有以下优点: 「实时性」 通过建立持久连接,实现「实时数据传输」和「双向通信」。...「较低的延迟」 相比传统的轮询机制,WebSockets 可以「减少无效的请求和响应」,降低延迟。 「节省带宽」 由于「不需要频繁的请求和响应」,WebSockets 在传输数据方面更加高效。...SignalR[5] 8.9K⭐ 一个为 ASP.NET 开发人员提供的实时 Web 功能库,可在浏览器和服务器之间建立双向通信。...sockjs-client[6] 8.2K⭐ 一个用于创建跨浏览器实时应用程序的 JavaScript 库,它提供了类似 WebSocket 的 API,并在不支持 WebSocket 的浏览器中使用轮询技术进行回退

    22540
    领券