Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

.NET 4.5 WebSockets vs SignalR

I've seen signalR vs html5 websockets for asp.net MVC chat application but it doesn't 100% answer my question as it's based around HTML5 WebSockets, which Microsoft may have extended upon in .NET 4.5 with their WebSocket object.

I'm wondering if the WebSocket feature does actually do the same as SignalR and fall back to long polling when WebSockets aren't available? Surely Microsoft would implement the same technology as SignalR in their approach to this technology?

Edit:

For anyone else wondering about this, I found this comment the most helpful to understand the scenario and why I'll be using SignalR:

Well, they are not really. Up until now IIS and ASP.NET didn't have anything built in that supported WebSockets so SignalR project had to build it themselves. Now that Microsoft is providing the plumbing SignalR could easily switch to using Microsoft's implementation, either in addition to or instead of their own. SignalR is an abstraction over implementation details, WebScockets class is the implementation detail

like image 902
Chris Dixon Avatar asked Mar 01 '12 21:03

Chris Dixon


People also ask

Should I use WebSockets or SignalR?

ASP.NET Core SignalR is a library that simplifies adding real-time web functionality to apps. It uses WebSockets whenever possible. For most applications, we recommend SignalR over raw WebSockets. SignalR provides transport fallback for environments where WebSockets isn't available.

Are WebSockets still used?

Websockets are largely obsolete because nowadays, if you create a HTTP/2 fetch request, any existing keepalive connection to that server is used, so the overhead that pre-HTTP/2 XHR connections needed is lost and with it the advantage of Websockets.

Does gRPC use WebSockets?

gRPC over WebSocket The workflow is as follows: The client initiates a gRPC request to the server. The client initiates a WebSocket connection with the server. The server accepts the WebSocket connection.


2 Answers

I think SignalR is the way to go, and is going to be part of .NET itself anyway (and likely extend/merge/replace web-sockets support). It uses web sockets when it's supported, and consistent client polling hack when it's not, so, it's the way to go.

Update:

Since this answer is still getting upvoted, it's worth mentioning that SignalR is now officially part of ASP.NET.

Check http://asp.net/signalr

Update: .NET Core

SignalR is also being added to .NET Core as @yazanpro noted in comments.

It's available in .NET Core 2.1, and has official documentation as well.

like image 90
Meligy Avatar answered Sep 29 '22 02:09

Meligy


  1. I'm wondering if the WebSocket feature does actually do the same as SignalR and fall back to long polling when WebSockets aren't available?

    WebSockets is a new protocol independent of other communication techniques. From the RFC

    The goal of this technology is to provide a mechanism for browser-based applications that need two-way communication with servers that does not rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or s and long polling).

  2. Surely Microsoft would implement the same technology as SignalR in their approach to this technology?

    Not if they want to conform to the specification they won't. There's certainly nothing stopping Microsoft from developing a higher level API similar to SignalR that would abstract away communication detail and offer graceful fallback. However that hypothetical API would probably build on top of WebSocket class as opposed to replacing it.

like image 26
Roman Avatar answered Sep 29 '22 03:09

Roman