Bu kılavuz neden var
WebSocket artık niş bir taşıma değil. Alım satım panoları, sohbet arka uçları, çok oyunculu oyunlar, IoT kontrol düzlemleri, Yapay Zeka akış yanıtları, tarayıcı tabanlı yönetici konsolları — neredeyse her modern etkileşimli uygulama en az bir WebSocket açar. 2026'da “hangi kütüphaneyi kullanmalıyım?” diye soran Delphi geliştiricileri, düşündüklerinden daha küçük bir alanla karşı karşıya: her klasik Delphi ağ paketi RFC 6455'i yakalamadı ve yakalayanların bazıları çok belirli nişlere yöneliktir.
Bu kılavuz, 2026 itibarıyla gerçekçi seçenekleri — sgcWebSockets, Indy, TMS FNC WX, mORMot, Synapse — inceler ve sonunda bir karar matrisi sunar. İddiaların bir sağlayıcının mevcut sürümüne bağlı olduğu yerlerde, bu makale yazıldığı tarihteki durumu açıklar; karar vermeden önce ayrıntıları her zaman sağlayıcının en son değişiklik günlüğüyle teyit edin.
Adaylar
sgcWebSockets (eSeGeCe)
WebSocket'e ve daha geniş modern protokol ailesine (HTTP/2, HTTP/3, MQTT, AMQP, STOMP, SSE, WAMP, WebRTC, IoT, Yapay Zeka API'leri) odaklanan ticari kütüphane. Tam RFC 6455, mesaj başına deflate, alt protokoller, kanallar, broadcast yardımcıları, WatchDog otomatik yeniden bağlanma, IOCP sunucu ölçeklendirme, JavaScript istemci yansıması, .NET portu. Ticari olmayan kullanım için Free Edition; dört ücretli sürüm. Delphi 7'den 13'e kadar, ayrıca C++Builder ve .NET.
Indy (standart)
Delphi ile birlikte gelen standart Indy, yerel bir WebSocket istemcisi veya sunucusu içermez. Birkaç topluluk eklentisi mevcuttur (GitHub'da “Indy WebSocket” araması yapın) ancak yazıldığı tarihte hiçbiri resmi IndyProject dağıtımının parçası değildir. Doğrudan Indy üzerine bir WebSocket oluşturursanız, esasen framer'ı kendiniz yazmış olursunuz. Ücretsiz, kutuda gelir.
TMS FNC WX (eski adıyla TMS WEB Core / FNC WebSocket)
TMS Software, FNC ailesinin bir parçası olarak çapraz çerçeveli bir WebSocket bileşeni (TTMSFNCWebSocketClient ve TMS XData / TMS Sparkle aracılığıyla bir sunucu tarafı) sunar. VCL, FMX, LCL ve TMS WEB Core üzerinde çalışır. İstemci tarafı sağlamdır; sunucu tarafı öncelikle bu ürünlerin bir özelliği olarak TMS XData / Sparkle yığını aracılığıyla sunulur. Ticari, geliştirici başına abonelik fiyatlandırması ile. Delphi 10.x ve daha yenisi.
mORMot 2
Synopse (Arnaud Bouchez) tarafından açık kaynaklı tam yığın çerçeve. SOA/ORM/REST altyapısıyla sıkı bir şekilde entegre edilmiş bir WebSocket istemcisi ve sunucusu içerir. mORMot'un WebSocket'i olgun, hızlıdır, ikili çerçeveleme ve mesaj başına deflate destekler ve yüksek ölçekli hizmetler için üretimde yaygın olarak kullanılır. Ödün, mORMot'un belirli görüşlere sahip olmasıdır — yalnızca WebSocket katmanını kullanmak mümkündür ancak doğal uyum, daha geniş çerçeveyi benimsediğinizde olur. Açık kaynak (MPL/GPL/LGPL üçlü lisans), Delphi 7 ve üzeri, ayrıca FreePascal.
Synapse
Klasik açık kaynaklı Pascal ağ kütüphanesi. Yazıldığı tarihte, standart Synapse bir WebSocket uygulaması içermez. Synapse üzerine inşa edilmiş bazı üçüncü taraf WebSocket katmanları mevcuttur ancak bunlar bakımsız veya tek yazarlı projelerdir. Ücretsiz.
Özellik matrisi
| Özellik | sgcWebSockets | Indy (standart) | TMS FNC WX | mORMot 2 | Synapse |
|---|---|---|---|---|---|
| WebSocket istemcisi | Evet | Hayır | Evet | Evet | Hayır |
| WebSocket sunucusu | Evet | Hayır | TMS XData/Sparkle aracılığıyla | Evet | Hayır |
| RFC 6455 (çerçeveler, maskeleme, kontrol çerçeveleri) | Evet | geçerli değil | Evet | Evet | geçerli değil |
| Mesaj başına deflate (RFC 7692) | Evet | geçerli değil | Kısmi | Evet | geçerli değil |
| Alt protokoller / kanallar / broadcast | Evet, yerleşik | geçerli değil | Manuel | Manuel | geçerli değil |
| Otomatik yeniden bağlanma / WatchDog | Evet | geçerli değil | Manuel | Manuel | geçerli değil |
| TLS üzerinden WebSocket (wss://) | Evet (OpenSSL, SChannel, BoringSSL) | geçerli değil | Evet | Evet | geçerli değil |
| WebSocket-MQTT / STOMP / WAMP alt protokolleri | Evet | geçerli değil | Hayır | Sınırlı | geçerli değil |
| HTTP/2, HTTP/3 | Evet | Hayır | Hayır | Sınırlı | Hayır |
| IOCP / epoll sunucu ölçeklendirme | Evet (Windows IOCP, Linux epoll) | Bağlantı başına iş parçacığı | Ana bilgisayar sunucusuna bağlı | Evet | geçerli değil |
| JavaScript istemci yansıması | Evet (JS kütüphanesiyle gelir) | geçerli değil | Evet (TMS WEB Core entegrasyonu) | Manuel | geçerli değil |
| .NET portu | Evet (aynı API) | geçerli değil | Hayır | Hayır | geçerli değil |
| Delphi sürümleri | D7 - D13 | D7 - D13 | D10.x - D13 | D7 - D13, FPC | D7 - D13, FPC |
| Lisans | Ticari (Free Edition mevcut) | Ücretsiz, MIT tarzı | Ticari | Açık kaynak üçlü lisans | Ücretsiz |
| Sağlayıcı desteği | Ücretli sürümlere dahil | Topluluk (IndyProject) | Aboneliğe dahil | Synopse aracılığıyla ticari destek | Topluluk / tek yazar |
| Aktif bakım | Aylık sürümler | Yavaş ama kararlı | Düzenli | Çok aktif | Yavaş |
Senaryoya göre seçim
Senaryo 1: Üçüncü taraf bir WebSocket API'sine bağlanan VCL masaüstü uygulaması
wss://'ye bağlanan, JSON gönderen, JSON alan, bağlantı kesildiğinde yeniden bağlanan, TLS'yi işleyen bir istemciye ihtiyacınız var. En kısa yol sgcWebSockets'tir (bileşeni bırakın, URL'yi ayarlayın, WatchDog.Attempts'u ayarlayın, tamam) veya FNC paketini zaten lisanslıyorsanız TMS FNC WX'tir. Indy ve Synapse, framer'ı kendiniz yazmanızı gerektirir; bu da RFC 6455 uç durumlarını doğru yapmak için çok iş demektir.
Senaryo 2: Yüzlerce istemci için bir WebSocket sunucusu oluşturma
Kanallar ve broadcast ile HTTP ve WebSocket'i aynı bağlantı noktasında sunan bağımsız bir sunucu bileşeni istiyorsanız sgcWebSockets doğal seçimdir. mORMot çerçevesinin içinde zaten bir SOA/REST hizmeti oluşturuyorsanız mORMot 2 doğal seçimdir — WebSocket katmanı yığının geri kalanıyla entegre olur ve ölçekte savaş testinden geçmiştir.
Senaryo 3: On binlerce eşzamanlı bağlantı
Hem sgcWebSockets (Windows'ta IOCP, Linux'ta epoll) hem de mORMot 2 bu ölçekte üretimde dağıtılmıştır. Standart Indy'nin bağlantı başına iş parçacığı modelinin, önemli mimari çalışma olmadan yetişmesi olası değildir. TMS FNC WX ölçeklendirmesi, seçilen ana bilgisayar sunucusuna (XData/Sparkle) bağlıdır.
Senaryo 4: Pascal tam yığın çerçevesinin içinde WebSocket (REST, ORM, SOA)
mORMot 2. mORMot tam da bunun içindir. Yalnızca WebSocket katmanını yalıtılmış olarak benimsemek mümkündür ancak en fazla değeri daha geniş çerçeveyi benimsediğinizde elde edersiniz.
Senaryo 5: Çapraz çerçeve istemcisi (VCL, FMX, LCL, TMS WEB Core)
TMS FNC WX tam da bu durum için tasarlanmıştır — dördünde de tek bir API. sgcWebSockets, VCL, FMX ve C++Builder'ın yanı sıra bir .NET portunu kapsar, ancak Lazarus/FPC'yi hedeflemez.
Senaryo 6: WebSocket'in yanı sıra MQTT, AMQP, WebRTC, HTTP/2, Yapay Zeka API'lerine ihtiyaç
sgcWebSockets, bu karşılaştırmada yukarıdakilerin tümünü tek bir ürün ve tek bir bileşen modeli altında sunan tek kütüphanedir. Projeniz “yalnızca bir WebSocket istemcisi”nden “tam bir gerçek zamanlı yığın”a doğru bir yörüngedeyse, erken birleştirmek genellikle birkaç kütüphaneyi sonradan birbirine yapıştırmaktan daha ucuzdur.
Senaryo 7: Sınırlı bütçe, yalnızca açık kaynak, hobi projesi
mORMot 2 (açık kaynak), size ücretsiz olarak ciddi bir WebSocket uygulaması sunar. sgcWebSockets'in Free Edition'ı ticari olmayan kullanım için bir seçenektir. Topluluk WebSocket eklentisiyle Indy teknik olarak mümkündür ancak ilgili RFC'leri kendiniz okumayı bekleyin.
Karar matrisi
| En çok ne önemli | Önerilen seçim |
|---|---|
| Çalışan istemciye en hızlı ulaşma + sağlayıcı desteği | sgcWebSockets |
| Açık kaynak tam yığın çerçeve | mORMot 2 |
| Çapraz çerçeve (VCL/FMX/LCL/WEB Core) | TMS FNC WX |
| En yüksek eşzamanlı bağlantı, ticari | sgcWebSockets |
| En yüksek eşzamanlı bağlantı, açık kaynak | mORMot 2 |
| WebSocket + MQTT + HTTP/2 + WebRTC + Yapay Zeka'yı kapsayan tek ürün | sgcWebSockets |
| Ücretsiz / taahhütsüz hobi projesi | mORMot 2 veya sgcWebSockets Free Edition |
| Zaten bir TMS XData / Sparkle projesinin içinde | TMS FNC WX |
| Zaten bir mORMot projesinin içinde | mORMot 2 |
Karar vermeden önce kontrol listesi
- Delphi sürümü — sağlayıcının uyumluluk matrisinde tam sürümünüzü (D7/D10.4/D11/D12/D13) listelediğini teyit edin.
- RFC 6455 uyumluluğu — kütüphanenin Autobahn WebSocket test paketini geçtiğini veya en azından parçalamayı, parçalama sırasındaki kontrol çerçevelerini ve UTF-8 doğrulamasını doğru şekilde işlediğini kontrol edin.
- TLS sağlayıcısı — OpenSSL en yaygın olanıdır; OpenSSL DLL'lerini gönderemiyorsanız SChannel önemlidir; QUIC'e ihtiyacınız varsa BoringSSL/ngtcp2 önemlidir.
- Yeniden bağlanma semantiği — otomatik yeniden bağlanma, üstel geri çekilme, ping/pong keep-alive sizin kodunuz değil, yapılandırma olmalıdır.
- Sunucu ölçeklendirme modeli — on binlerce bağlantı için IOCP/epoll; bağlantı başına iş parçacığı düşük binlere kadar idare eder.
- Lisans uyumluluğu — üçlü lisans (mORMot), ticari abonelik (TMS), sürüm başına ticari (sgcWebSockets), ücretsiz (Indy/Synapse).
- Bakım sinyali — son 12 ayın değişiklik günlüğüne bakın. Aktif kütüphaneler en azından üç ayda bir bir şey yayınlar.
Kapanış düşünceleri
2026'daki Delphi WebSocket ortamı ilk bakışta göründüğünden daha sağlıklıdır. Hızlı bir istemci için sgcWebSockets sizi dakikalar içinde çalışır hale getirir. Açık kaynaklı tam yığın bir proje için mORMot 2'yi geçmek zordur. Çapraz çerçeveli GUI istemcileri için TMS FNC WX doğal bir uyum sağlar. Standart Indy ve Synapse, klasik İnternet protokolleri için değerli olmaya devam eder ancak hiçbiri WebSocket'e sahip değildir. Doğru seçim, projenizin “tek uç nokta”dan “tam gerçek zamanlı platform”a uzanan yelpazede nerede durduğuna bağlıdır — hem bugünkü gereksiniminize hem de iki yıl içinde projenin nerede olmasını beklediğinize uyan kütüphaneyi seçin.