Indy to biblioteka komunikacyjna klient/serwer o otwartym kodzie źródłowym obsługująca gniazda TCP/UDP/RAW oraz ponad 100 protokołów wyższego poziomu, w tym SMTP, POP3, IMAP, NNTP, HTTP, FTP i wiele innych. Indy jest napisana w Delphi, ale jest również dostępna dla C++Builder i FreePascal. sgcWebSockets używa Indy jako podstawy dla niektórych komponentów, a różne edycje sgcWebSockets w różny sposób korzystają z biblioteki Indy.
sgcWebSockets obsługuje protokoły takie jak HTTP/2, które wymagają użycia ALPN, może korzystać z TLS 1.3 przy użyciu openSSL 1.1.1 lub openSSL 3.0.0 — wszystkie te funkcje nie są obsługiwane przez standardową bibliotekę Indy, dlatego edycja Enterprise sgcWebSockets zawiera niestandardową bibliotekę Indy obsługującą te funkcje. Aby uniknąć odinstalowywania standardowej biblioteki Indy z IDE, wymagane pliki Indy są przemianowywane przez dodanie prefiksu "sgc", na przykład jednostka "IdGlobal" otrzymuje nazwę "sgcIdGlobal". Dzięki temu obie wersje mogą współistnieć bez problemów.
Poniżej przedstawiono wersję Indy używaną przez poszczególne edycje sgcWebSockets:
| Edycja sgcWebSockets | Wersja Indy |
| STANDARD | Standard |
| PROFESSIONAL | Standard |
| ENTERPRISE | Niestandardowy |
Klienci posiadający licencje „Registered" (stare licencje sprzed podziału pakietu sgcWebSockets) znajdą następujące wersje pakietu sgcWebSockets:
| Edycja sgcWebSockets | Wersja Indy |
| sgcWebSockets | Standard |
| sgcWebSockets min | Standard |
| sgcWebSockets min Indy* | Niestandardowy |
*sgcWebSockets_min_indy jest tożsamy z edycją sgcWebSockets Enterprise.
Użycie niestandardowej wersji Indy jest określone w pliku "sgcVer.inc" znajdującym się w folderze źródłowym. Istnieje dyrektywa kompilatora o nazwie "SGC_CUSTOM_INDY", która włącza lub wyłącza korzystanie z tej wersji Indy. Jeśli posiadasz edycję Enterprise i chcesz wyłączyć korzystanie z niestandardowego Indy, usuń następującą dyrektywę kompilatora:
{$DEFINE SGC_CUSTOM_INDY}
Oczywiście, jeśli włączono SGC_CUSTOM_INDY, ale w folderze źródłowym brakuje wymaganych jednostek niestandardowej wersji Indy, ta definicja kompilatora nie zadziała.
Użycie niestandardowej wersji Indy nie jest ograniczone wyłącznie do komponentów sgcWebSockets. Niektórzy klienci chcą korzystać z nowych funkcji tej niestandardowej wersji Indy w standardowych komponentach Indy, takich jak SMTP, aby na przykład używać TLS 1.3 podczas wysyłania wiadomości e-mail, korzystania z serwerów FTP itp. Edycja eSeGeCe ALL-ACCESS oferuje dodatkowy pełny pakiet Indy ze wszystkimi tymi funkcjami. Ten pakiet, zwany „pakietem sgcIndy", zawiera pełną bibliotekę Indy z obsługą openSSL 1.1.1 i openSSL 3.0.0. W związku z tym należy najpierw odinstalować aktualnie zainstalowaną bibliotekę Indy z IDE, a następnie zainstalować tę wersję. Proces instalacji pakietu sgcIndy jest dokładnie taki sam jak w przypadku każdej biblioteki Indy (nazwy jednostek nie są tutaj zmieniane).
Aby korzystać z bibliotek OpenSSL, należy ustawić zmienną globalną OPENSSL_API_VERSION na żądaną wersję API OpenSSL przed załadowaniem bibliotek OpenSSL. Ta zmienna globalna znajduje się w module IdSSLOpenSSLHeaders.
Przykład: użycie bibliotek openSSL 1.1.1
OPENSSL_API_VERSION := opSSL_1_1;
Przy jednoczesnym użyciu eSeGeCe ALL-ACCESS i pakietu sgcIndy w tej samej aplikacji, źródła mogą być zduplikowane, ponieważ wersja Enterprise sgcWebSockets używa niestandardowej wersji Indy z przemianowanymi jednostkami. Oznacza to, że na przykład jednostki takie jak sgcIdGlobal.pas i IdGlobal.pas będą kompilowane w tej samej aplikacji (pierwsza jest używana przy korzystaniu z dowolnego komponentu pakietu sgcWebSockets Enterprise, a druga przy korzystaniu z dowolnego komponentu pakietu sgcIndy, jak ftp, smtp...).
Aby uniknąć tego zachowania, pakiet sgcWebSockets można skonfigurować tak, aby używał zainstalowanej wersji sgcIndy, zachowując dostęp do wszystkich komponentów. W tym celu należy postępować zgodnie z poniższymi instrukcjami:
1. Otwórz plik sgcVer.inc, znajdujący się w folderze Source pakietu sgcWebSockets.
2. Wyłącz dyrektywę kompilatora: SGC_CUSTOM_INDY. Ta opcja informuje kompilator, że pliki zaczynające się od sgcId*.pas istnieją i muszą być używane podczas kompilowania pakietu sgcWebSockets Enterprise.
3. Włącz następujący kompilator: SGC_INDY_LIB. Ta opcja informuje kompilator, że pakiet sgcIndy jest zainstalowany i musi być używany podczas kompilacji pakietu.
{$DEFINE SGC_INDY_LIB}
Przy powyższej konfiguracji pakiet Enterprise sgcWebSockets będzie korzystał z zainstalowanego pakietu sgcIndy, a wszystkie funkcje korzystające z tego pakietu (takie jak HTTP/2, IOCP, OpenSSL 3.0 itp.) zostaną włączone.