Heim > Backend-Entwicklung > C++ > Wie erstellt man eine einfache SignalR-Konsolenanwendung mit einem Server und einem Client?

Wie erstellt man eine einfache SignalR-Konsolenanwendung mit einem Server und einem Client?

DDD
Freigeben: 2025-01-05 03:54:42
Original
782 Leute haben es durchsucht

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

Beispiel für eine SignalR-Konsolen-App

In diesem Artikel untersuchen wir ein Beispiel einer Konsolenanwendung, die SignalR für die Kommunikation mit einem .NET verwendet Hub.

SignalR-Setup

Bevor Sie fortfahren, stellen Sie Folgendes sicher SignalR-Pakete werden sowohl in den Server- als auch in den Clientanwendungen über NuGet installiert:

  • Server: SignalR.Host.Self (Version 0.5.2)
  • Client: Microsoft.AspNet.SignalR. Client

Server-Implementierung

Erstellen ein Konsolen-App-Server mit dem folgenden Code:

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);
            }
        }
    }
}
Nach dem Login kopieren

Client-Implementierung

In einem separaten Konsolen-App-Client:

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();
        }
    }
}
Nach dem Login kopieren

Probleme und Lösungen

Zuweisen eines Hubs Name

Wenn Sie Probleme mit einem bestimmten Hub-Namen („test“) in Ihrem serverseitigen Code haben (z. B. [HubName(„test“)]), stellen Sie sicher, dass es keinen Konflikt gibt mit dem HubName-Attribut im clientseitigen Code. Der sowohl im Server als auch im Client verwendete Hub-Name muss für eine ordnungsgemäße Kommunikation übereinstimmen.

Das obige ist der detaillierte Inhalt vonWie erstellt man eine einfache SignalR-Konsolenanwendung mit einem Server und einem Client?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage