SignalR 콘솔 앱 예제
이 기사에서는 SignalR을 사용하여 .NET과 통신하는 콘솔 애플리케이션의 예를 살펴보겠습니다. 허브.
시그널R 설정
계속하기 전에 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!