WebSockets - Server funktioniert

Ein Web Socket-Server ist ein einfaches Programm, das Web Socket-Ereignisse und -Aktionen verarbeiten kann. In der Regel werden ähnliche Methoden für die Web Socket-Client-API verfügbar gemacht, und die meisten Programmiersprachen bieten eine Implementierung. Das folgende Diagramm zeigt den Kommunikationsprozess zwischen einem Web Socket-Server und einem Web Socket-Client, wobei die ausgelösten Ereignisse und Aktionen hervorgehoben werden.

Das folgende Diagramm zeigt das Auslösen eines Web Socket-Servers und eines Client-Ereignisses.

Herstellen einer Verbindung zum Webserver

Der Web Socket-Server funktioniert ähnlich wie die Web Socket-Clients. Es reagiert auf Ereignisse und führt bei Bedarf Aktionen aus. Unabhängig von der verwendeten Programmiersprache führt jeder Web Socket-Server bestimmte Aktionen aus.

Es wird mit einer Web Socket-Adresse initialisiert. Es handhabtOnOpen, OnClose, und OnMessage Ereignisse und sendet auch Nachrichten an die Clients.

Erstellen einer Web Socket Server-Instanz

Jeder Web Socket-Server benötigt einen gültigen Host und Port. Ein Beispiel für das Erstellen einer Web Socket-Instanz auf dem Server lautet wie folgt:

var server = new WebSocketServer("ws://localhost:8181");

Jede gültige URL kann mit der Angabe eines Ports verwendet werden, der zuvor nicht verwendet wurde. Es ist sehr nützlich, die verbundenen Clients aufzuzeichnen, da sie Details mit unterschiedlichen Daten bereitstellen oder unterschiedliche Nachrichten an jeden senden.

Fleck repräsentiert die eingehenden Verbindungen (Clients) mit dem IwebSocketConnectionSchnittstelle. Immer wenn jemand eine Verbindung zu unserem Dienst herstellt oder von diesem trennt, kann eine leere Liste erstellt oder aktualisiert werden.

var clients = new List<IWebSocketConnection>();

Danach können wir die anrufen StartMethode und warten Sie, bis die Clients eine Verbindung hergestellt haben. Nach dem Start kann der Server eingehende Verbindungen akzeptieren. In Fleck benötigt die Start-Methode einen Parameter, der den Socket angibt, der die Ereignisse ausgelöst hat.

server.Start(socket) =>
{
});

OnOpen-Ereignis

Das OnOpenEreignis bestimmt, dass ein neuer Client Zugriff angefordert hat, und führt einen ersten Handshake durch. Der Client sollte zur Liste hinzugefügt werden, und wahrscheinlich sollten die dazugehörigen Informationen wie die IP-Adresse gespeichert werden. Fleck liefert uns solche Informationen sowie eine eindeutige Kennung für die Verbindung.

server.Start(socket) ⇒ {

   socket.OnOpen = () ⇒ {
      // Add the incoming connection to our list.
      clients.Add(socket);
   }
	
   // Handle the other events here...
});

OnClose-Ereignis

Das OnCloseEreignis wird ausgelöst, wenn ein Client getrennt wird. Der Client wird aus der Liste entfernt und informiert den Rest der Clients über die Trennung.

socket.OnClose = () ⇒ {
   // Remove the disconnected client from the list.
   clients.Remove(socket);
};

OnMessage-Ereignis

Das OnMessageEreignis wird ausgelöst, wenn ein Client Daten an den Server sendet. Innerhalb dieses Ereignishandlers kann die eingehende Nachricht an die Clients übertragen werden oder wahrscheinlich nur einige von ihnen auswählen.

Der Prozess ist einfach. Beachten Sie, dass dieser Handler eine Zeichenfolge mit dem Namen verwendetmessage als Parameter -

socket.OnMessage = () ⇒ {
   // Display the message on the console.
   Console.WriteLine(message);
};

Send () -Methode

Das Send()Methode überträgt einfach die gewünschte Nachricht an den angegebenen Client. Mit Send () können Text- oder Binärdaten auf den Clients gespeichert werden.

Die Arbeit von OnMessage Ereignis ist wie folgt -

socket.OnMessage = () ⇒ {
   foreach (var client in clients) {
      // Send the message to everyone!
      // Also, send the client connection's unique identifier in order
      // to recognize who is who.
      client.Send(client.ConnectionInfo.Id + " says: " + message);
   }
};