SignalR은 서버와 클라이언트의 실시간 통신을 실현합니다.

먼저 관련 DLL 참조
2 Startup 파일은 SignalR의 포털입니다.
using Microsoft.Owin;using Owin;

[assembly: OwinStartup(typeof(SignalR.Core.Startup))]namespace SignalR.Core
{    public class Startup
    {        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }

    }
}

SignalR의 JS 파일 3세트
4 구체적인 업무를 실현하는 핵심 클래스 파일은 Hub를 통합시켜야 하고, 클라이언트에서 호출할 수 있도록 특성 HubName을 사용하여 SignalR의 이름을 지어야 한다
using Microsoft.AspNet.SignalR;using Microsoft.AspNet.SignalR.Hubs;using SignalR.Core.Model;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Web;namespace SignalR.Core
{

    [HubName("UrlHub")]    public class UrlValid : Hub
    {        static List ConnectedUsers = new List();        public void Connect(string url,string userID)
        {            var id = Context.ConnectionId;if (ConnectedUsers.Count(x => x.ConnectionId == id) == 0)
            {
                ConnectedUsers.Add(new CurrentUser
                {
                    ConnectionId = id,
                    UserID = userID,
                });
                Clients.Caller.onConnected(id, userID, url);                //Clients.AllExcept(id).onNewUserConnected(id, userID);
                Clients.Client(id).onNewUserConnected(id, userID);
            }            else
            {

                Clients.Caller.onConnected(id, userID, url);
                Clients.Client(id).onExistUserConnected(id, userID);                // Clients.AllExcept(id).onExistUserConnected(id, userID);            }
        }        /// 
        ///           /// 
        public void Exit(string userID)
        {            var id = Context.ConnectionId;   
            OnDisconnected();
            Clients.Caller.onConnected(id, userID, "");
            Clients.Client(id).onExit(id, userID);
        }        /// 
        ///           /// 
        /// 
        public override System.Threading.Tasks.Task OnDisconnected()
        {            var item = ConnectedUsers.FirstOrDefault(x => x.ConnectionId == Context.ConnectionId);            if (item != null)
            {
                ConnectedUsers.Remove(item);                var id = Context.ConnectionId;
                Clients.All.onUserDisconnected(id, item.UserID);

            }            return base.OnDisconnected();
        }

    }
}

5코어 JS 기능 코드 단편
    
    

    
    
    
    

    
        $(function () {            // Declare a proxy to reference the hub
            var chatHub = $.connection.UrlHub;
            registerClientMethods(chatHub);            // Start Hub            $.connection.hub.start().done(function () {
                registerEvents(chatHub);
            });

        });        //               function registerEvents(chatHub) {
            $("#btn").click(function () {                var url = "dasfjasldfj";
                chatHub.server.connect(url);
            });

            $("#logOut").click(function () {
                chatHub.server.exit();
            });

        }        //               function registerClientMethods(chatHub) {

            chatHub.client.onConnected = function (id, userID, url) {
                console.log("         " + url);
            }

            chatHub.client.onUserDisconnected = function (id, userID) {
                console.log("         ");
            }

            chatHub.client.onNewUserConnected = function (id, userID) {
                alert("        ");
            }

            chatHub.client.onExistUserConnected = function (id, userID) {
                alert("  " + userID + "      ");
            }

            chatHub.client.onExit = function (id, userID) {

                alert("  " + userID + "    !");
            }

        }    

정적 클래스
 public static class BroadCast    {        public static void SendAllMessage(string name, string mes)        {            IHubContext chat = GlobalHost.ConnectionManager.GetHubContext();            chat.Clients.All.broadcastMessage(name, mes);        }
    }

좋은 웹페이지 즐겨찾기