WebSockets - Sunucu Çalışması

Web Soketi sunucusu, Web Soketi olaylarını ve eylemlerini yönetme yeteneğine sahip basit bir programdır. Genellikle benzer yöntemleri Web Soketi istemci API'sine sunar ve çoğu programlama dili bir uygulama sağlar. Aşağıdaki şema, tetiklenen olayları ve eylemleri vurgulayarak bir Web Soketi sunucusu ile bir Web Soketi istemcisi arasındaki iletişim sürecini göstermektedir.

Aşağıdaki diyagramda bir Web Soketi sunucusu ve istemci olay tetiklemesi gösterilmektedir -

Web Sunucusuna Bağlanma

Web Soketi sunucusu, Web Soketi istemcilerine benzer şekilde çalışır. Olaylara cevap verir ve gerektiğinde eylemler gerçekleştirir. Kullanılan programlama dilinden bağımsız olarak, her Web Soket sunucusu bazı özel eylemler gerçekleştirir.

Bir Web Soketi adresine başlatılır. İdare ederOnOpen, OnClose, ve OnMessage olaylar ve istemcilere de mesajlar gönderir.

Web Soket Sunucusu Örneği Oluşturma

Her Web Soket sunucusunun geçerli bir ana bilgisayara ve bağlantı noktasına ihtiyacı vardır. Sunucuda bir Web Soketi örneği oluşturmanın bir örneği aşağıdaki gibidir -

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

Herhangi bir geçerli URL, daha önce kullanılmayan bir bağlantı noktası belirtimi ile kullanılabilir. Farklı verilerle ayrıntılar sağladığı veya her birine farklı mesajlar gönderdiği için bağlı istemcilerin kaydını tutmak çok kullanışlıdır.

Fleck, gelen bağlantıları (istemcileri) temsil eder. IwebSocketConnectionarayüz. Biri hizmetimize bağlandığında veya bağlantısı kesildiğinde, boş liste oluşturulabilir veya güncellenebilir.

var clients = new List<IWebSocketConnection>();

Ondan sonra arayabiliriz Startyöntemi ve istemcilerin bağlanmasını bekleyin. Başladıktan sonra, sunucu gelen bağlantıları kabul edebilir. Fleck'te, Start yönteminin olayları oluşturan soketi gösteren bir parametreye ihtiyacı vardır -

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

OnOpen Etkinliği

OnOpenolay, yeni bir istemcinin erişim istediğini belirler ve bir ilk el sıkışma gerçekleştirir. İstemci listeye eklenmeli ve muhtemelen IP adresi gibi bilgiler onunla ilgili olarak saklanmalıdır. Fleck, bize bu tür bilgileri ve bağlantı için benzersiz bir tanımlayıcı sağlar.

server.Start(socket) ⇒ {

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

OnClose Olayı

OnClosebir istemcinin bağlantısı kesildiğinde olay ortaya çıkar. Müşteri listeden çıkarılır ve diğer istemcileri bağlantının kesilmesi konusunda bilgilendirir.

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

OnMessage Olayı

OnMessageolay, bir istemci sunucuya veri gönderdiğinde ortaya çıkar. Bu olay işleyicinin içinde, gelen mesaj istemcilere iletilebilir veya muhtemelen sadece bazılarını seçebilir.

İşlem basit. Bu işleyicinin adlı bir dizge aldığını unutmayın.message parametre olarak -

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

Gönder () Yöntemi

Send()yöntem basitçe istenen mesajı belirtilen istemciye iletir. Send () kullanılarak, metin veya ikili veriler istemciler arasında depolanabilir.

Çalışma OnMessage olay aşağıdaki gibidir -

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