Friday, 18 November 2016

SignalR example - mvc

No comments
ContachHub.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Repository.Pattern;
using CarribeaneTaxi.Entity;
using System.IO;

namespace signalRTest.Hubs
{
    public class ContactHub : Hub
    {
        UnitOfWork uow = new UnitOfWork();  
        public void addRequest(Guid GUID, int Id)
        {
            var userRepository = uow.Repository<UserRepository>();
            var userData = userRepository.GetUsersByGUID(GUID);

            var repository = uow.Repository<Repository>();
            var data = repository .GetAll(Id);

            Clients.All.addRequest(userData.UserId, userData.Name, DateTime.Now, GUID);
        }

        public static void addRequest1(string name, string message)
        {
            var hubContext = GlobalHost.ConnectionManager.GetHubContext<ContactHub>();
            hubContext.Clients.All.broadcastMessage(name, message);
        }

    }

}


Startup.cs

using Microsoft.AspNet.SignalR;
using Microsoft.Owin;
using Microsoft.Owin.Cors;
using Owin;
[assembly: OwinStartupAttribute(typeof(signalRTest.Startup))]
namespace signalRTest
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.Map("/signalr", map =>
            {
                map.UseCors(CorsOptions.AllowAll);
                map.RunSignalR();
            });      
        }
    }

}


JQUERY

<script src="Scripts/jquery.signalR-2.2.0.js"></script>
 <script src="http://localhost:4562/signalr/hubs"></script>

Common.SignalRURL: function () {
            return 'http://localhost/signalr';
        },

<script type="text/javascript">
        var contactNotifyUsers = undefined;
        $.connection.hub.url = CarribeanCommon.SignalRURL();
        contactNotifyUsers = $.connection.contactHub;
    </script>


Client where you get response 


   //set signalr real time data fetch        
        $.connection.hub.url =Common.SignalRURL();
        contactNotifyUsers = $.connection.contactHub;
        contactNotifyUsers.client.addRequest = function (userId, name, date, GUID) {
            setTimeout(function () {
                if (localStorage.getItem('GUID').toUpperCase() == GUID.toUpperCase()) {
                 
                }
            }, 1000);
        }
        $.connection.hub.start();

//Or

       $.connection.hub.url = Common.SignalRURL();
        $.connection.contactHub.client.broadcastMessage = function (id, name) {
            if (id == userId) {
                $scope.callerName = name;
                $scope.ShoWpop();
                $scope.$apply();
            }
        };
        $.connection.hub.start({ transport: ['webSockets', 'longPolling'] }).done(function () {
            setTimeout(function () {
                contactNotifyUsers.server.addRequest1('displayname', 'message');
            }, 2000)
        });




Request to server 


$.connection.hub.url = CarribeanCommon.SignalRURL();
                    contactNotifyUsers = $.connection.contactHub;
                    $.connection.hub.start({ transport: ['webSockets', 'longPolling'] }).done(function () {
                        contactNotifyUsers.server.addRequest(localStorage.getItem('GUID'), Id);
                        if (window.location.hash == '#/userCurrentRide') {
                            $route.reload();
                        }
                    });