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中文網其他相關文章!