> 백엔드 개발 > C++ > 서버와 클라이언트를 사용하여 간단한 SignalR 콘솔 애플리케이션을 구축하는 방법은 무엇입니까?

서버와 클라이언트를 사용하여 간단한 SignalR 콘솔 애플리케이션을 구축하는 방법은 무엇입니까?

DDD
풀어 주다: 2025-01-05 03:54:42
원래의
779명이 탐색했습니다.

How to Build a Simple SignalR Console Application with a Server and Client?

SignalR 콘솔 앱 예제

이 기사에서는 SignalR을 사용하여 .NET과 통신하는 콘솔 애플리케이션의 예를 살펴보겠습니다. 허브.

시그널R 설정

계속하기 전에 NuGet을 통해 서버와 클라이언트 애플리케이션 모두에 다음 SignalR 패키지가 설치되어 있는지 확인하세요.

  • 서버: SignalR.Host.Self(버전 0.5. 2)
  • 클라이언트: Microsoft.AspNet.SignalR.Client

서버 구현

다음 코드를 사용하여 콘솔 앱 서버를 만듭니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿