IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

Socket io .NET (Geliştiriciler İçin Nasıl Çalışır)

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 8 Mayıs 2026

Socket.IO sunucusu, gerçek zamanlı, çift yönlü ve olay yönlendirmeli iletişimi kolaylaştıran sağlam bir kütüphane olarak ön plana çıkar. Genellikle sohbet uygulamaları, canlı güncellemeler ve işbirlikçi platformlar gibi web uygulamalarında yaygın olarak kullanılır. Socket.IO genellikle JavaScript ile ilişkilendirilse de, istemci tarafında C# ile de etkili bir şekilde kullanılabilir. Bazen istemci bir web tarayıcısı olabilir. Bu makalede, bir C# ortamında bir Socket.IO istemcisinin nasıl kurulup kullanılacağına bakacağız. Bazı temel örnekleri inceleyeceğiz ve sonunda faydaları ve potansiyel kullanım durumları ile sonuçlandıracağız.

Socket.IO Bağlantılarını Kurmak İçin Yöntemler

Socket.IO bağlantısı, farklı düşük seviyeli taşıma yöntemleriyle kurulabilir:

  • HTTP uzun anketi

  • Web Soketleri

    • Web Taşıması

Socket io .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - İstemci-Sunucu iletişim uygulaması

Visual Studio 2022'de Konsol Projesi Oluşturma

Visual Studio'yu açın ve Başlangıç penceresinde Yeni Proje Oluştur seçeneğini seçin.

Visual Studio 2022'de bir konsol uygulaması oluşturmak için, Visual Studio'yu başlatın ve başlangıç penceresinden 'Yeni proje oluştur' seçeneğini seçin. 'Konsol Uygulaması' şablonunu seçin, projeyi bir ad ve konumla yapılandırın ve .NET 6.0'ın seçili olduğundan emin olun.

Socket.IO Nedir?

Socket.IO, bir JavaScript kütüphanesi olarak, web istemcilerinin ve sunucularının gerçek zamanlı iletişim kurmalarını sağlar. İki parçadan oluşur:

Socket IO'nun Parçaları

  • İstemci tarafı kütüphane: Tarayıcıda çalışır.
  • Sunucu tarafı kütüphane: Node.js üzerinde çalışır.

Gerekli Paketleri Yükleyin

Visual Studio'da .NET uygulamaları için Socket.IO kullanmak istiyorsanız, uyumlu bir sunucu implementasyonuna ihtiyacınız olacaktır. Böyle bir implementasyon, .NET için SocketIoClientDotNet çalışmasıdır, bu da bir Socket.IO istemcisinin bir C# uygulamasından bir Socket.IO'ya bağlanmasına olanak tanır.

Öncelikle, gerekli NuGet paketlerini yükleyin. Bunu Paket Yöneticisi Konsolu aracılığıyla veya proje dosyanıza referans ekleyerek yapabilirsiniz:

PM > Install-Package SocketIoClientDotNet

SocketIoClientDotNet paketi ekran görüntüsü

Socket io .NET (How It Works For Developers): Figure 3 - Install Socket.IO for NET using the Manage NuGet Package for Solution by searching "SocketIoClientDotNet" package name in the search bar of NuGet Package Manager, then select the project and click on the Install button.

Bu komutu çalıştırmak, Socket.IO istemci kütüphanesini .NET projenize entegre eder, bu da C# uygulamanızın bir Socket.IO sunucusuna bağlanarak, kullanıcılar ve sistem arasında iletişim sağlanmasını kolaylaştırır.

Socket.IO Oluşturma

C# istemcisine girmeden önce, Visual Studio'da .NET Core Konsol Uygulaması kullanarak temel bir Socket IO örneği kurulumunu yapalım. Bu, istemci implementasyonunu test etmemize yardımcı olacaktır.

Sunucu Implementasyonları Oluşturma

Aşağıdaki kod, C# dilinde bir Socket.IO sunucusunu temel bir şekilde kurar. Bu sunucu, 3000 numaralı port üzerinden istemci bağlantılarını dinler. Bir istemci mesaj gönderdiğinde, sunucu bu mesajı kaydeder ve alındığını onaylayan bir yanıt gönderir.

using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Quobject.SocketIoClientDotNet.Client;

namespace DemoApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Connect to the Socket.IO server
            var socket = IO.Socket("http://localhost:3000");

            // Listen for the "connect" event
            socket.On(Socket.EVENT_CONNECT, () =>
            {
                Console.WriteLine("Connected to the server!");

                // Emit a message to the server
                socket.Emit("message", "Hello from C# client!");

                // Listen for messages from the server
                socket.On("message", (data) =>
                {
                    Console.WriteLine("Message from server: " + data);
                });
            });

            // Listen for the "disconnect" event
            socket.On(Socket.EVENT_DISCONNECT, () =>
            {
                Console.WriteLine("Disconnected from the server!");
            });

            // Keep the console window open
            Console.ReadLine();
        }
    }
}

Kod Açıklaması

Bu kesitte, ilk olarak IO.Socket("http://localhost:3000") çağrısı yaparak bir Socket.IO istemci örneği oluştururuz, böylece istemci makinesinde port 3000'de çalışan yerel sunucuya bağlanırız.

Başarılı bağlantı kurulduğunda (Socket.EVENT_CONNECT), sunucuya bağlandığımızı belirten bir mesaj yazarız.

Ardından, istemciden sunucuya socket.Emit("message", "Hello from C# client!") kullanarak bir mesaj göndeririz. Bu, sunucuya "C# istemcisinden merhaba!" içeriğiyle bir mesaj gönderir.

Sonraki adımda, 'mesaj' olayı için bir geri arama kayıt ederek sunucudan gelen mesajları dinliyoruz (@@--CODE-9281--@@ ile). @@--CODE-9281--@@ Sunucu bir "mesaj" olayı gönderdiğinde, geri çağırma fonksiyonu çağırılır ve alınan mesajı konsolda yazdırırız.

İstemciden sunucuya olan bağlantı (Socket.EVENT_DISCONNECT) kesilirse, bağlantının kesildiğini belirten bir mesaj yazarız.

Son olarak, Console.ReadLine() yöntemi konsol penceresini açık tutar, böylece program çalıştırmanın hemen ardından kapanmaz. Bu, çıktıyı görmemize ve programın erken sonlanmasını önlememize olanak tanır.

Kodun Ekran Görüntüsü

Socket io .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 4 - Örnek kod

HTTP uzun anketi

Uzun anket, genellikle bir web tarayıcısı ve bir sunucu arasında ileti göndermek için bir kütüphane kullanan web geliştirme tekniğidir. Gerçek zamanlı iletişim sağlamak için sunucu üzerinde olayları tetikleyerek, istemcinin sürekli anket yapmasına gerek kalmadan alıcının almasını sağlar. Bu yöntem, sohbet uygulamaları veya hisse senedi göstergeleri gibi hızla güncellenmesi gereken uygulamalarda çok faydalıdır.

Socket io .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 5 - HTTP uzun anketleme

Web Soketleri

WebSocket, tek bir TCP bağlantısı üzerinden çift yönlü iletişim kanalları kurarak çift yönlü iletişime olanak tanır. Bu protokol, genellikle bir web tarayıcısı gibi bir istemci ve bir sunucu arasında gerçek zamanlı etkileşim sağlar, her iki tarafın da asenkron olarak mesaj alışverişi yapmasına imkan tanır.

WebSocket İletişimini Kurma

İstemci, bir WebSocket bağlantısı kurmak istediğini belirterek sunucuya bir WebSocket el sıkışma isteği gönderir. El sıkışma isteğini aldıktan sonra, sunucu bir WebSocket el sıkışma yanıtı gönderir ve bağlantının başarıyla kurulduğunu belirtir. WebSocket bağlantısı üzerinden gönderilen mesajlar herhangi bir formatta (örneğin, metin veya ikili) olabilir ve asenkron olarak gönderilip alınabilir.

Web Taşıma

Web Taşıma, geleneksel protokollerin (TCP ve UDP gibi) sınırlarını aşan ek özellikler sunarak web iletişimini geliştiren son teknoloji bir protokol olarak karşımıza çıkar. UDP ve QUIC'ten yararlanarak seleflerinin eksikliklerini giderir, bunu daha kullanıcı dostu ve verimli hale getirir. Kullanıcılar için bu, daha az gecikme süresi ve gelişmiş tıkanıklık kontrolüne dönüşür, nihayetinde daha pürüzsüz ve daha duyarlı bir web deneyimi sağlar. Ayrıca, Web Taşıma daha iyi güvenlik önlemleri sunar, TCP'ye kıyasla daha güvenli veri aktarımı sağlar. Bu gelişmelerle birlikte, Web Taşıma veri transferinin zaman alıcı yönlerini en aza indirir, hem istemci hem de sunucular için genel performansı optimize eder.

İşte bir web uygulamasındaki Web Taşımanın basit bir örneği:

using System;
using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;

namespace SocketIO.Demo
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // The WebSocket URI
            string uri = "wss://echo.websocket.org";

            // Creating a new WebSocket connection
            using (ClientWebSocket webSocket = new ClientWebSocket())
            {
                await webSocket.ConnectAsync(new Uri(uri), CancellationToken.None);
                Console.WriteLine("Connected to the server");

                // Sending data over the WebSocket
                byte[] sendBuffer = new byte[] { 1, 2, 3, 4 };
                await webSocket.SendAsync(new ArraySegment<byte>(sendBuffer), WebSocketMessageType.Binary, true, CancellationToken.None);
                Console.WriteLine("Data sent to the server");

                // Receiving data from the WebSocket
                byte[] receiveBuffer = new byte[1024];
                WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(receiveBuffer), CancellationToken.None);
                byte[] data = new byte[result.Count];
                Array.Copy(receiveBuffer, data, result.Count);
                Console.WriteLine("Received data: " + BitConverter.ToString(data));
            }
        }
    }
}

Bu örnekte, ilk olarak bir WebSocket URL'si (wss://echo.websocket.org) kullanarak sunucuya yeni bir WebSocket bağlantısı oluştururuz. Daha sonra, bağlantı üzerinden çift yönlü bir akış oluştururuz ve akış üzerinden ([1, 2, 3, 4]) bazı veriler göndeririz. Son olarak, akıştan veri okuyor ve bunu konsola kaydediyoruz.

Yukarıdaki kodun çıktısı

WebSocket yankı sunucusu ile uygulamayı çalıştırdığınızda, çıktı şu şekilde görünmelidir:

Socket io .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 6 - WebSocket URL'si kullanarak WebSocket bağlantısı için konsol çıktısı.

Web Taşımanın Avantajları

  • Modern Alternatif: Web Taşıma, TCP ve UDP gibi geleneksel web iletişim protokollerine modern bir alternatif sunar.
  • Verimli Veri Transferi: Çoklu akışlar ve ileri düzey özelliklerden yararlanarak verimli veri aktarımı sunar.
  • Yüksek Performans: Düşük gecikme süresi ve güvenilir veri transferi talep eden yüksek performanslı web uygulamaları için çok uygundur.
  • Çoklu Akışlar: Çoklu akışları destekler, tek bir bağlantı üzerinden aynı anda birden fazla veri akışının gönderilip alınmasına olanak tanır.
  • Yenilik: Web geliştiricileri Web Taşıma'yı benimsemeye devam ettikçe, web iletişim protokollerinde daha fazla yenilik görmeyi bekleyebiliriz.
  • Gelişmiş Kullanıcı Deneyimi: Web Taşımanın benimsenmesi, web üzerindeki kullanıcı deneyimlerinde daha hızlı ve daha güvenilir veri transferi yoluyla iyileştirmelere yol açabilir.

IronPDF Kütüphanesinin Tanıtımı

IronPDF özellikle C# ile çalışan geliştiriciler için tasarlanmış kapsamlı bir .NET PDF kütüphanesidir. Bu güçlü araç, geliştiricilerin uygulamaları içinde PDF dosyalarını oluşturmasını, değiştirmesini ve okumasını zahmetsizce sağlar. IronPDF ile geliştiriciler, HTML dizileri, HTML dosyaları ve URL'ler gibi içeriklerden PDF belgeleri üretebilir, bu da çeşitli kullanım durumları için oldukça esnek olmasını sağlar. Ek olarak, IronPDF, başlıklar, altbilgiler, filigranlar eklemek gibi ileri düzey PDF düzenleme özellikleri sunar. NuGet paket yöneticisi aracılığıyla, IronPDF'in C# projelerine sorunsuz entegrasyonu, PDF dosyalarıyla çalışmayı kolaylaştırır, geliştirmeyi hızlandırır ve verimliliği artırır.

Socket io .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 7 - IronPDF for .NET: C# PDF Kütüphanesi

NuGet Paket Yöneticisi ile Kurulum

NuGet Paket Yöneticisini kullanarak Visual Studio'da veya komut satırından IronPDF'i yükleyin. Visual Studio'da konsola gidin:

  • Araçlar -> NuGet Paket Yöneticisi -> Paket Yöneticisi Konsolu

PM > Install-Package IronPdf

IronPDF kod örneği

İşte ikili veriyi PDF dosyasına dönüştürmek için IronPDF kullanan basit bir örnek. Main metodunda GeneratePDF metodunu çağırın ve yukarıdaki örnekteki verileri bir parametre olarak geçirin:

using System;
using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;

namespace SocketIO.Demo
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // The WebSocket URI
            string uri = "wss://echo.websocket.org";

            // Creating a new WebSocket connection
            using (ClientWebSocket webSocket = new ClientWebSocket())
            {
                await webSocket.ConnectAsync(new Uri(uri), CancellationToken.None);
                Console.WriteLine("Connected to the server");

                // Sending data over the WebSocket
                byte[] sendBuffer = new byte[] { 1, 2, 3, 4 };
                await webSocket.SendAsync(new ArraySegment<byte>(sendBuffer), WebSocketMessageType.Binary, true, CancellationToken.None);
                Console.WriteLine("Data sent to the server");

                // Receiving data from the WebSocket
                byte[] receiveBuffer = new byte[1024];
                WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(receiveBuffer), CancellationToken.None);
                byte[] data = new byte[result.Count];
                Array.Copy(receiveBuffer, data, result.Count);
                Console.WriteLine("Received data: " + BitConverter.ToString(data));

                // Data to generate in PDF file
                string pdfData = BitConverter.ToString(data);
                PDFGenerator.GeneratePDF(pdfData);
            }
        }
    }
}

PDF Oluşturma Sınıfı kodu

using IronPdf;

namespace SocketIO.Demo
{
    public class PDFGenerator
    {
        public static void GeneratePDF(string data)
        {
            IronPdf.License.LicenseKey = "Your-Licence-Key-Here";
            Console.WriteLine("PDF Generating Started...");

            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            Console.WriteLine("PDF Processing ....");

            var pdf = renderer.RenderHtmlAsPdf($"<h1>Received Data</h1><p>{data}</p>");
            string filePath = "Data.pdf";
            pdf.SaveAs(filePath);
            Console.WriteLine($"PDF Generation Completed. File Saved as {filePath}");
        }
    }
}

Çıktı

Socket io .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 8 - Socket.IO ve IronPDF kullanarak Konsol Çıkışı

Verilen koda göre, IronPDF, WebSocket bağlantısından alınan altıgen bir diziden bir PDF belgesi oluşturmak için kullanılır. GeneratePDF yöntemi, IronPDF'yi bir lisans anahtarıyla başlatır ve hexadecimal diziyi HTML içerik olarak PDF'ye dönüştürmek için ChromePdfRenderer örneğini kullanır RenderHtmlAsPdf yöntemiyle. Ücretsiz lisans anahtarınızı buradan alabilirsiniz. Bu PDF daha sonra SaveAs yöntemiyle yerel olarak "Data.pdf" ismiyle kaydedilir. IronPDF'in entegrasyonu, dinamik WebSocket verilerini yapısal bir PDF formatına sorunsuz bir şekilde dönüştürmesini sağlar ve gerçek zamanlı veri akışlarını arşiv belgelerine dönüştürme konusundaki faydasını gösterir.

Oluşturulan PDF Dosyası

Socket io .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 9 - IronPDF kullanarak oluşturulan Çıktı PDF

Sonuç

C# ile Socket.IO kullanmak, JavaScript ve Node.js alanlarının ötesine geçerek bağlı istemcilerle gerçek zamanlı etkileşim sağlamak için birçok fırsat sunar. .NET projelerinize Socket.IO ve IronPDF gibi araçları entegre etmek, gerçek zamanlı iletişim ve PDF işleme yeteneklerini önemli ölçüde artırabilir. Socket.IO, istemciler ve sunucular arasında sorunsuz gerçek zamanlı, çift yönlü iletişimi kolaylaştırırken, IronPDF, PDF belgelerini oluşturma ve değiştirme için sağlam özellikler sunar.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez