WebSocket-Client in C#

Haider Ali 12 Oktober 2023
  1. WebSocket in C#
  2. Erstellen Sie einen WebSocket-Client in C#
  3. Erstellen Sie einen WebSocket-Client mit der Disposing-Methode in C#
WebSocket-Client in C#

In diesem Handbuch wird erläutert, was C# WebSocket ist und wie eine Verbindung in C# hergestellt wird. Und schließlich befasst sich der Artikel mit dem WebSocket-Client in C# und wie man ihn schreibt.

Lassen Sie uns also ohne weitere Verzögerung eintauchen.

WebSocket in C#

Um das Konzept von WebSocket richtig zu verstehen, müssen wir uns mit dem Netzwerkbereich befassen. Jetzt ist WebSocket ein Kommunikationsprotokoll, das eine TCP-Verbindung verwendet, um eine Vollduplex-Verbindung für die Kommunikation bereitzustellen.

TCP ermöglicht eine Verbindung zwischen Servern, damit diese kommunizieren. Da es sich um eine Vollduplex-Kommunikation handelt, bietet sie auch die Möglichkeit, zwischen Servern hin und her zu kommunizieren.

Das WebSocket-Protokoll ermöglicht es einem Webbrowser, mit einem Webserver zu interagieren. Im Gegensatz zu anderen Protokollen wie HTTP, bei dem es sich um eine Halbduplex-Kommunikation handelt, ermöglicht WebSocket dem Server und dem Client, ohne Unterbrechungen vollständig an einer bidirektionalen Kommunikation teilzunehmen.

Der Client müsste den Inhalt nicht anfordern, da der Server ihn sendet, was die Kommunikation vereinfacht.

Dies ermöglicht auch einen Nachrichtenstrom. WebSocket aktiviert diese Nachrichten, die über TCP gestreamt werden, sodass es mit Byte-Streams ohne Konzept einer eigenen Nachricht umgeht.

Verbindung herstellen (Handshaking)

Zwischen einem Server und einem Client wird über TCP eine Verbindung hergestellt, und TCP verwendet das Handshake-Konzept. Dies bedeutet, dass der Client die Erlaubnis zum Aufbau einer Verbindung zum Server anfordert und der Server dann entscheidet, ob er diese Verbindung aufbaut oder nicht.

Sobald die Verbindung aufgebaut ist, können Client und Server ohne Unterbrechung kommunizieren.

TCP-Verbindung verwenden

Sie kennen vielleicht die andere Verbindung namens UDP. Nun stellt sich die Frage: Warum TCP und nicht UDP verwenden?

Nun, erstens bietet UDP nicht die Funktionen, die TCP bietet. Es gibt keine Zuverlässigkeit, keine richtige Verbindung.

Der einzige Vorteil der Verwendung von UDP wäre die hohe Geschwindigkeit, aber dieser Grund reicht nicht aus, um diese Verbindung zu verwenden. Wir verwenden also TCP, das aufgrund seiner Handshaking-Regel zuverlässig ist.

Erstellen Sie einen WebSocket-Client in C#

Jetzt bietet das .NET-Framework eine gewisse Unterstützung für WebSocket; Es ist nur ein etwas mühsamer Prozess und extrem schwierig, den Code von Grund auf neu zu schreiben. Wir verwenden also eine Bibliothek speziell für WebSocket, WebSocketSharp.

Es ist weit verbreitet, da es unsere Programmiererfahrung viel einfacher macht. Um dies zu nutzen, müssten wir es in unsere Software herunterladen; empfehlenswert wäre Visual Studio.

Mal sehen, wie wir diese Bibliothek verwenden, um eine clientseitige Verbindung mit unserem Server herzustellen. Beachten Sie, dass wir in diesem Beispiel die URL des Servers verwenden müssen, mit dem wir uns verbinden möchten, und dass sie immer mit ws beginnen sollte, da wir eine WebSocket-Verbindung erstellen.

using System;
using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;

namespace WebSocket_Client {
  public class Program {
    static void Main(string[] args) {
      // creating a client WebSocket
      WebSocket webSocket = new WebSocket(
          "ws://simple-websocket-server-echo.glich.me/");  // in this string, we will type URL of
                                                           // server we want to connect to

      webSocket.OnMessage += webSocket_OnMessage;  // message for the function below

      webSocket.Connect();                          // connection to server
      webSocket.Send("Hello server, i am client");  // message to server
    }

    public static void webSocket_OnMessage(object viewer,
                                           MessageEventArgs a)  // function for server to respond
    {
      Console.WriteLine("Recived from the server " + a.Data);
    }
  }
}

Erstellen Sie einen WebSocket-Client mit der Disposing-Methode in C#

Eine andere Möglichkeit, den clientseitigen Code zu schreiben, wäre die Verwendung der Funktion using(). Mit dieser Funktion können wir den in dieser Funktion geschriebenen Codeblock entsorgen.

Es ist wichtig, diese Funktion zu verwenden, da wir mit einer TCP-Verbindung arbeiten. Wie oben besprochen, bauen wir in TCP eine Verbindung durch die Handshaking-Regel auf, um unsere Verbindung zu sichern und ihre Zuverlässigkeit zu erhöhen.

Aber manchmal wird die hergestellte Verbindung nicht richtig geschlossen. Dies kann zu Problemen beim erneuten Verbindungsaufbau führen, da die Verbindung aus Sicht des Compilers nie geschlossen wurde.

Um dieser Fehlerschleife zu entkommen, verwenden wir also die Funktion using() und schreiben unseren Codeblock, um die Verbindung ordnungsgemäß auszuführen und zu beseitigen.

using System;
using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;

namespace WebSocket_Client {
  class Program {
    static void Main(string[] args) {
      using (WebSocket webSocket = new WebSocket(
                 "ws://simple-websocket-server-echo.glich.me/"))  // write the URL of server to
                                                                  // connect to
      {
        webSocket.OnMessage += webSocket_OnMessage;  // message for the function below

        webSocket.Connect();                          // connection to the server
        webSocket.Send("Hello server, i am client");  // sending a message to the server
      }
    }

    public static void webSocket_OnMessage(object viewer,
                                           MessageEventArgs a)  // function for server to respond
    {
      Console.WriteLine("Recived from the server " + a.Data);
    }
  }
}
Autor: Haider Ali
Haider Ali avatar Haider Ali avatar

Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.

LinkedIn