SignalR コンソール アプリの例
この記事では、SignalR を使用して .NET と通信するコンソール アプリケーションの例を検討します。ハブ。
SignalRセットアップ
次に進む前に、NuGet 経由で次の SignalR パッケージがサーバー アプリケーションとクライアント アプリケーションの両方にインストールされていることを確認してください:
サーバー実装
次のコードを使用してコンソール アプリ サーバーを作成します:
using System; using SignalR.Hubs; namespace SignalR.Hosting.Self.Samples { class Program { static void Main(string[] args) { string url = "http://127.0.0.1:8088/"; var server = new Server(url); server.MapHubs(); server.Start(); Console.WriteLine("Server running on {0}", url); while (true) { ConsoleKeyInfo ki = Console.ReadKey(true); if (ki.Key == ConsoleKey.X) { break; } } } [HubName("CustomHub")] public class MyHub : Hub { public string Send(string message) { return message; } public void DoSomething(string param) { Clients.addMessage(param); } } } }
クライアント実装
別のコンソール アプリ クライアント:
using System; using SignalR.Client.Hubs; namespace SignalRConsoleApp { internal class Program { private static void Main(string[] args) { var connection = new HubConnection("http://127.0.0.1:8088/"); var myHub = connection.CreateHubProxy("CustomHub"); connection.Start().ContinueWith(task => { if (task.IsFaulted) { Console.WriteLine("Error opening connection: {0}", task.Exception.GetBaseException()); } else { Console.WriteLine("Connected"); } }).Wait(); myHub.Invoke<string>("Send", "HELLO World ").ContinueWith(task => { if (task.IsFaulted) { Console.WriteLine("Error calling Send: {0}", task.Exception.GetBaseException()); } else { Console.WriteLine(task.Result); } }); myHub.On<string>("addMessage", param => { Console.WriteLine(param); }); myHub.Invoke<string>("DoSomething", "I'm doing something!!!").Wait(); Console.Read(); connection.Stop(); } } }
問題と解決策
ハブ名の割り当て
特定のハブ名で問題が発生した場合("test") をサーバー側コード (例: [HubName("test")]) に含める場合は、クライアント側コードの HubName 属性と競合しないことを確認してください。適切な通信を行うには、サーバーとクライアントの両方で使用されるハブ名が一致する必要があります。
以上がサーバーとクライアントを使用して単純な SignalR コンソール アプリケーションを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。