Cliente WebSocket en C#

Haider Ali 12 octubre 2023
  1. WebSocket en C#
  2. Crear un Cliente WebSocket en C#
  3. Cree un cliente WebSocket con el método de eliminación en C#
Cliente WebSocket en C#

Esta guía discutirá qué es C# WebSocket y cómo establecer una conexión en C#. Y finalmente, el artículo abordará el cliente WebSocket en C# y cómo escribirlo.

Entonces, sin más demora, vamos a sumergirnos.

WebSocket en C#

Para comprender correctamente el concepto de WebSocket, tendremos que analizar el campo de las redes. Ahora, WebSocket es un protocolo de comunicación que utiliza una conexión TCP para proporcionar una conexión dúplex completa para la comunicación.

TCP permite una conexión entre servidores para que se comuniquen. Dado que es una comunicación dúplex completa, también brinda la oportunidad de entablar una comunicación entre servidores de ida y vuelta.

El protocolo WebSocket permite que un navegador web interactúe con un servidor web. A diferencia de otros protocolos como HTTP, que es una comunicación semidúplex, WebSocket permite que el servidor y el cliente participen en una comunicación bidireccional sin interrupciones por completo.

El cliente no necesitaría solicitar el contenido ya que el servidor lo enviará, facilitando la comunicación.

Esto también permite un flujo de mensajes. WebSocket habilita estos mensajes que se transmiten a través de TCP para que se ocupe de flujos de bytes sin concepto de un mensaje propio.

Establecer una conexión (apretón de manos)

Se establece una conexión entre un servidor y un cliente a través de TCP, y TCP utiliza el concepto de Handshake. Esto significa que el cliente solicita permiso para formar una conexión con el servidor, y el servidor decide si forma esta conexión o no.

Una vez que se forma la conexión, el Cliente y el Servidor pueden comunicarse sin interrupción.

Usar conexión TCP

Es posible que conozca la otra conexión llamada UDP. Ahora surge la pregunta: ¿por qué usar TCP y no UDP?

Bueno, en primer lugar, UDP no ofrece las características que ofrece TCP. No hay confiabilidad, no hay una conexión adecuada.

La única ventaja de usar UDP sería su alta velocidad, pero esta razón no es suficiente para usar esta conexión. Entonces, usamos TCP, que es confiable debido a su regla de Handshaking.

Crear un Cliente WebSocket en C#

Ahora, el marco .NET tiene cierto soporte para WebSocket; es solo que es un proceso un poco tedioso y extremadamente complicado escribir el código desde cero. Así que usamos una biblioteca específica para WebSocket, WebSocketSharp.

Prevalece ya que hace que nuestra experiencia de programación sea mucho más fácil. Para usar esto, tendríamos que descargarlo en nuestro software; recomendado sería Visual Studio.

Veamos cómo usaremos esta biblioteca para crear una conexión del lado del cliente con nuestro servidor. Tenga en cuenta que en este ejemplo, tenemos que usar la URL del servidor al que queremos conectarnos y que siempre debe comenzar con ws ya que estamos creando una conexión WebSocket.

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);
    }
  }
}

Cree un cliente WebSocket con el método de eliminación en C#

Otra forma de escribir el código del lado del Cliente sería usando la función using(). Usando esta función, podemos deshacernos del bloque de código escrito dentro de esta función.

Es importante utilizar esta función ya que estamos trabajando con una conexión TCP. Como se discutió anteriormente, en TCP, establecemos una conexión mediante la regla de protocolo de enlace para asegurar nuestra conexión y aumentar su confiabilidad.

Pero a veces, la conexión establecida no se cierra correctamente. Esto puede crear problemas al volver a crear la conexión ya que, desde el punto de vista del compilador, la conexión nunca se cerró.

Entonces, para escapar de este ciclo de errores, usamos la función using() y escribimos nuestro bloque de código para ejecutar correctamente y eliminar la conexión.

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