SignalR入門マルチプラットフォームSignalRサービス

13583 ワード

以前にSignalRサービスを作成したのは、Webアプリケーションに基づいています.では、SignalRサービス側をコンソールアプリケーション、Winform、windowsサービスにすることはできますか?
答えは肯定的だ.
以前はIISやASPのように見えましたがNetはSignalRサービスを管理する唯一の環境を構成するが、実際にはそうではなく、IISやASPではない場合が多い.NET.
ここで、ここではコンソールプログラムを例に、SignalRサービス側をコンソールプログラムに構築する.
コンソール・プログラムでHubまたは永続接続ベースのSignalRサービスを実装するには、まず次のパッケージをインストールします.
install-package Microsoft.AspNet.SignalR.SelfHost
インストールが完了すると、プロジェクトは参照するライブラリファイルを自動的にロードします.
そしてコンソールのプログラムクラスで
 1 using System.Linq;
 2 using System.Text;
 3 using System.Threading.Tasks;
 4 
 5 namespace ConsoleApplication1
 6 {
 7     class Program
 8     {
 9         static void Main(string[] args)
10         {
11             using (WebApp.Start("http://localhost:8888/"))//    ,         。
12             {
13                 Console.WriteLine("Server running at http://localhost:8888/");
14                 Console.ReadLine();
15             }
16         }
17     }
18 }

上記のコードでは、永続的な接続またはHubを確立する前に作成した起動クラスStarupが必要であることがわかります.
 1 using System;
 2 using System.Threading.Tasks;
 3 using Microsoft.Owin;
 4 using Owin;
 5 
 6 [assembly: OwinStartup(typeof(Startup))]
 7 
 8 public class Startup
 9 {
10     public void Configuration(IAppBuilder app)
11     {
12         app.MapSignalR("/test");//
13     }
14 }
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Threading.Tasks;
 5 using System.Web;
 6 using Microsoft.AspNet.SignalR;
 7 
 8 public class TestConnection : PersistentConnection
 9 {
10     protected override Task OnConnected(IRequest request, string connectionId)
11     {
12         return Connection.Send(connectionId, "Welcome!");
13     }
14 
15     protected override Task OnReceived(IRequest request, string connectionId, string data)
16     {
17         Console.WriteLine(connectionId+"============="+data);//       
18         return Connection.Broadcast(data);//           
19     }
20 }

以上の方式はコンソールにSignalRサービスを確立し,持続的な接続方式で符号化したものである.
もちろん,Hubを用いてサービス側を設定することも可能であり,従来と同様である.
SignalRのサービス側が確立された後、クライアントを確立する必要があります.これまで、私たちのクライアントはhtmlでjsで接続を確立していました.では、クライアントもコンソールアプリケーションとして構築します.
まずコンソールアプリケーションを作成し、次のパッケージをインストールします.
install-package microsoft.aspnet.signalr.client
 
プログラムクラスのMainメソッドで次のように記述します.
 1 using Microsoft.AspNet.SignalR.Client.Transports;
 2 using System;
 3 using System.Collections.Generic;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Threading.Tasks;
 7 using Microsoft.AspNet.SignalR;
 8 using Microsoft.AspNet.SignalR.Client;
 9 namespace ConsoleApplication2
10 {
11     class Program
12     {
13         static void Main(string[] args)
14         {
15             try
16             {
17                 //GlobalHost
18                 var connection = new Connection("http://localhost:8888/test");//                      
19                 
20                 connection.Start();//    
21                 connection.Received += Connection_Received;//        
22                 string str = "";
23                 while ((str = Console.ReadLine()) != "")
24                 {
25                     connection.Send(str);//    
26                 }
27         
28             }
29             catch (Exception ex)
30             {
31 
32                 Console.WriteLine(ex.Message);
33             }
34             Console.Read();
35         }
36 
37         private static void Connection_Received(string obj)
38         {
39             Console.WriteLine(obj);
40         }
41     }
42 }