SignalR은 서버와 클라이언트의 실시간 통신을 실현합니다.
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); }
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
집 서버 설계 (하드웨어 편)자신의 Redmine이나 ownCloud를 운용하기 위해 사쿠라 VPS, DigitalOcean, OpenShift 등을 놀랐습니다만, 침착 해 왔으므로 현상을 정리하고 싶습니다. 먼저 하드웨어 구성을 정리합니다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.