ホームページ > バックエンド開発 > C++ > サーバーとクライアントを使用して単純な SignalR コンソール アプリケーションを構築する方法

サーバーとクライアントを使用して単純な SignalR コンソール アプリケーションを構築する方法

DDD
リリース: 2025-01-05 03:54:42
オリジナル
781 人が閲覧しました

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

SignalR コンソール アプリの例

この記事では、SignalR を使用して .NET と通信するコンソール アプリケーションの例を検討します。ハブ。

SignalRセットアップ

次に進む前に、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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート