Introducing ASP.Net SignalR in MVC 5


In this article I am using the ASP.NET SignalR library in the latest MVC 5 project template. Let me give you a glimpse of SignalR, it is a library that adds real-time web functionality to the ASP.NET applications. Now, what is this real-time functionality? It is used to access the server code and push the content to the connected clients instantly instead of the server waiting for the client's request.

In that context, I am developing an ASP.NET Web application using the MVC Project template and in it using a real-time web application with ASP.NET SignalR.


I am using Visual Studio 2013. There are some prerequisites to develop the application:

  • Visual Studio 2010 SP1 or Visual Studio 2012.
  • ASP.NET and Web Tools 2012.2

Let's create an application for SignalR development using the following sections:

  • MVC 5 Application
  • Code Execution

MVC 5 Application

Step 1: Open Visual Studio 2013 and create a New Project.


Step 2: Select MVC project template.


Step 3: Open the Package Manager Console.


And write the following command:

install-package Microsoft.AspNet.SignalR


Step 4: You can see in your Solution Explorer that the SignalR was successfully added to your application.


Step 5: Add a new folder named Hubs in your application and add a class in it.


Give the name of your class ChatHub as shown below:


Step 5: Add the following code in the class:

using Microsoft.AspNet.SignalR;


namespace SignalRDemo.Hubs


    public class ChatHub : Hub


        public void  LetsChat(string Cl_Name, string Cl_Message)


            Clients.All.NewMessage(Cl_Name, Cl_Message);




Step 6: Open the Global.asax file and modify the Applicatio_Start() method as shown below:

public class MvcApplication : System.Web.HttpApplication


    protected void Application_Start()









Step 7: Open your HomeController.cs file and modify it as shown below:

public ActionResult Contact()


    ViewBag.Message = "Your contact page.";


    return View();



public ActionResult Chat()


    ViewBag.Message = "Your chat page";


    return View();


Step 8: Generate the view for the Chat method as shown in the following parts:

  • Select Home folder and right-click to add Scaffold

  • Select MVC 5 View in the Add Scaffold wizard

  • Do as directed in the following image:


Step 9: Add the following code in the Chat.cshtml file:


    ViewBag.Title = "Chat";








<div class="container">

    <input type="text" id="TxtMessage" />

    <input type="button" id="BtnSend" value="Send" />

    <input type="hidden" id="UserName" />

    <ul id="Chats"></ul>



@section scripts {


    <script src="~/Scripts/jquery.signalR-1.1.3.js"></script>

    <script src="~/signalr/Hubs"></script>



        $(function () {


            var chat = $.connection.chatHub;

            chat.client.NewMessage=function(Cl_Name, Cl_Message) {

                $('#Chats').append('<li><strong>' + htmlEncode(Cl_Name)

                    + '</strong>: ' + htmlEncode(Cl_Message) + '</li>');


            $('#UserName').val(prompt('Please Enter Your Name:', ''));


            $.connection.hub.start().done(function () {

                $('#BtnSend').click(function () {

                    chat.server.LetsChat($('#UserName').val(), $('#TxtMessage').val());






        function htmlEncode(value) {

            var encodedValue = $('<div />').text(value).html();

            return encodedValue;





Code Execution

Save all your application and debug the application. Use the following procedure.

Step 1: Debug your application. Open /Home/Chat in your browser like: http://localhost:12345/Home/Chat 

Step 2: Enter your name in the prompt:


Step 3: Enter message and send:


After clicking on Send:


Step 4: Copy the browser URL and open more browsers, paste the URL in the address bar and do the same thing as above.


That's it.


So far in this article I introduced SignalR integration with the MVC 5 project template. I developed a chat application with the use of ASP.NET SignalR. So, just do it and enjoy and let me know if you have any problem. Thanks.