.NET 4.5 WebSockets与SignalR

问题描述 投票:50回答:3

我见过signalR vs html5 websockets for asp.net MVC chat application,但它没有100%回答我的问题,因为它基于HTML5 WebSockets,微软可能已经在.NET 4.5中使用他们的WebSocket对象进行了扩展。

我想知道WebSocket功能是否确实与SignalR相同,并且在WebSockets不可用时又回退到长轮询?当然,微软在采用这种技术的方法中会采用与SignalR相同的技术吗?

编辑:

对于其他任何想知道这个的人,我发现这个评论最有助于理解这个场景以及为什么我会使用SignalR:

嗯,他们不是真的。到目前为止,IIS和ASP.NET没有内置任何受支持的WebSockets,因此SignalR项目必须自己构建它。现在微软正在提供管道,SignalR可以轻松切换到使用微软的实现,无论是自己的还是替代。 SignalR是一个实现细节的抽象,WebScockets类是实现细节

asp.net websocket signalr
3个回答
25
投票
  1. 我想知道WebSocket功能是否确实与SignalR相同,并且在WebSockets不可用时又回退到长轮询? WebSockets是一种独立于其他通信技术的新协议。来自RFC 该技术的目标是为基于浏览器的应用程序提供一种机制,该机制需要与不依赖于打开多个HTTP连接的服务器进行双向通信(例如,使用XMLHttpRequest或s和长轮询)。
  2. 当然,微软在采用这种技术的方法中会采用与SignalR相同的技术吗? 如果他们想要符合规范他们不会。当然,没有什么可以阻止微软开发类似于SignalR的更高级别的API,这样可以抽象出通信细节并提供优雅的回退。然而,假设的API可能建立在WebSocket类之上而不是替换它。

37
投票

我认为SignalR是要走的路,并且无论如何都将成为.NET本身的一部分(并且可能扩展/合并/替换web-socket支持)。它在支持时使用Web套接字,并且当它不支持时使用一致的客户端轮询黑客,因此,它是要走的路。

更新:

由于这个答案仍然被提升,值得一提的是SignalR现在正式成为ASP.NET的一部分。

检查http://asp.net/signalr

更新:.NET Core

正如@yazanpro在评论中指出的那样,SignalR也被添加到.NET Core中。

它可用in .NET Core 2.1,并有official documentation


8
投票

SignalR使用OWIN,如果浏览器支持Web套接字,则使用WebSockets连接;如果浏览器不支持WebSockets,则使用长轮询。

© www.soinside.com 2019 - 2024. All rights reserved.