SignalR入門マルチプラットフォームSignalRサービス
13583 ワード
以前にSignalRサービスを作成したのは、Webアプリケーションに基づいています.では、SignalRサービス側をコンソールアプリケーション、Winform、windowsサービスにすることはできますか?
答えは肯定的だ.
以前はIISやASPのように見えましたがNetはSignalRサービスを管理する唯一の環境を構成するが、実際にはそうではなく、IISやASPではない場合が多い.NET.
ここで、ここではコンソールプログラムを例に、SignalRサービス側をコンソールプログラムに構築する.
コンソール・プログラムでHubまたは永続接続ベースのSignalRサービスを実装するには、まず次のパッケージをインストールします.
install-package Microsoft.AspNet.SignalR.SelfHost
インストールが完了すると、プロジェクトは参照するライブラリファイルを自動的にロードします.
そしてコンソールのプログラムクラスで
上記のコードでは、永続的な接続またはHubを確立する前に作成した起動クラスStarupが必要であることがわかります.
以上の方式はコンソールにSignalRサービスを確立し,持続的な接続方式で符号化したものである.
もちろん,Hubを用いてサービス側を設定することも可能であり,従来と同様である.
SignalRのサービス側が確立された後、クライアントを確立する必要があります.これまで、私たちのクライアントはhtmlでjsで接続を確立していました.では、クライアントもコンソールアプリケーションとして構築します.
まずコンソールアプリケーションを作成し、次のパッケージをインストールします.
install-package microsoft.aspnet.signalr.client
プログラムクラスのMainメソッドで次のように記述します.
答えは肯定的だ.
以前は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 }