Simplify Messaging with SignalR

Most of modern applications push real-time data to its users to keep them up-to-date.

Today we are going to talk about one of such technology used to broadcast real-time data to frontend applications like mobile apps, browsers or social networking sites.

The technology is called "SignalR". It is a free and open-source software library for Microsoft ASP.NET that allows server code to send asynchronous notifications or messages to client-side.

What it does?

  • It enables server code to push content to connected clients instantly when client becomes available instead of client to request data from server.
  • SignalR supports "server push" functionality, in which server code can call out to client code in the browser using Remote Procedure Calls (RPC).
  • The SignalR API contains two models for communicating between clients and servers: Connections and Hubs.
  • A Connection is a simple endpoint for sending messages.
  • A Hub is a more high-level pipeline built upon the Connection API that allows client and server to call methods on each other directly.
  • Applications should use Hubs API to get more flexibility.

Where SignalR can be Used?

  • Notifications : If your application wants to notify single or all clients then use SignalR.
  • Chat: If you want to include one to one or one to many chat messaging feature then use SignalR.
  • Gaming: Gaming applications that need frequent pushing of data from server Handling Security with SignalR.
  • SignalR on its own does not have any authentication mechanisms but relies on your application’s authentication structure.
  • You need to enforce which authenticate users have access to Hub in your signalR code.
  • It provides "Authorize" attribute to specify which users have access to a hub.
  • SignalR validates identity of sender in each request by using connection token. This token is a combination of connection id and username for authenticated users. For each request, the server validates the contents of the token to ensure that the request is coming from the specified user.

Advantages of SignalR:

  • It handles connection management automatically.
  • It can send the message to all the connected client simultaneously.
  • It is also very useful to send the message to a specific client or group of clients.
  • Scales in / out automatically to handle traffic.

SignalR and WebSocket

  • Web socket is the main protocol used by SignalR when web socket is available.
  • If web socket is not available, then SignalR will use different way to push data from server to the client.
  • With WebSocket, you will need to implement lot of extra functionality that SignalR provides by default.
  • SignalR also supports updates to WebSocket, since SignalR is updated to support changes in the underlying transport, it provides uniform interface across versions of WebSocket.

How SignalR Can Simplify Your Messaging Needs? share your experiences with us.