기본적으로 IIS 에서 운용하지만, 그렇게 하지 못하는 경우도 있기 때문에, 자체적으로 실행되는 SelfHost 방식으로도 실행 할 수 있다.
특히나 SignalR 을 실행하려면 Window 2012 Server 이상이 되어야 하는데, 그렇지 못한 경우에 SelfHost 방식을 사용하면 편리하다.
일단 콘솔 응용 프로그램으로 프로젝트를 하나 생성하고.
"도구 > NuGet 패키지 관리자 > 패키지 관리자 콘솔" 로 이동.
패키지 관리자에서 SignalR 관련 패키지들을 설치해 준다.
Install-Package Microsoft.AspNet.SignalR.SelfHost
Install-Package Microsoft.Owin.Cors
이 두개의 패키지를 설치해 준다.
그런 다음 아래의 소스를 등록하고 실행 해주면 끝.
using System; using Microsoft.AspNet.SignalR; using Microsoft.Owin.Hosting; using Owin; using Microsoft.Owin.Cors; namespace SignalRSelfHost { class Program { static void Main(string[] args) { string url = "http://*:8080"; using (WebApp.Start<startup>(url)) { Console.WriteLine("Server running on {0}", url); Console.ReadLine(); } } } class Startup { public void Configuration(IAppBuilder app) { app.UseCors(CorsOptions.AllowAll); app.MapSignalR(); } } public class ServerHub : Hub { public void Send(string name, string message) { Clients.All.addMessage(name, message); } } }위 소스의 "ServerHub" 부분이 실제 처리 로직 부분이니 그 부분에 필요한 기능을 구현하면 된다.
그리고 실행 도메인을 "http://*:8080" 으로 해놨는데, 일반적으론 특정 서버의 주소 혹은 아이피가 들어가게 되고, 그러면 지정된 그 서버에서 실행된 경우에만 응답을 하게 된다.
물론 보안상 그렇게 하는게 좋지만, 여기서는 테스트 용이므로 "http://*:8080" 해 놓은것.
이렇게 하면 아무데서나 실행해도 응답을 하게 된다.
암튼 이걸 실행하면 이렇게 서버가 실행이 되고, 이 후로는 일반적인 SignalR 과 동일 하게 사용하면 된다.