Indy es una biblioteca de comunicaciones cliente/servidor de código abierto que admite sockets TCP/UDP/RAW, así como más de 100 protocolos de nivel superior, incluidos SMTP, POP3, IMAP, NNTP, HTTP, FTP y muchos más. Indy está escrita en Delphi pero también está disponible para C++Builder y FreePascal. sgcWebSockets usa Indy como base para algunos componentes y las diferentes ediciones de sgcWebSockets hacen un uso distinto de la biblioteca Indy.
sgcWebSockets admite protocolos como HTTP/2 que requieren el uso de ALPN, puede utilizar TLS 1.3 con openSSL 1.1.1 u openSSL 3.0.0... todas estas funcionalidades no están soportadas por la biblioteca Indy estándar, por lo que la edición Enterprise de sgcWebSockets incluye una biblioteca Indy personalizada que sí las soporta. Para evitar desinstalar la biblioteca Indy estándar del IDE, los archivos Indy necesarios se renombran añadiendo el prefijo "sgc"; por ejemplo: la unidad "IdGlobal" se renombra como "sgcIdGlobal". De este modo, ambas versiones pueden coexistir sin problemas.
A continuación encontrará qué versión de Indy utiliza cada edición de sgcWebSockets:
| Edición de sgcWebSockets | Versión de Indy |
| STANDARD | Standard |
| PROFESSIONAL | Standard |
| ENTERPRISE | Personalizado |
Los clientes con licencias «Registered», que son licencias antiguas anteriores a la división del paquete sgcWebSockets, encontrarán las siguientes versiones del paquete sgcWebSockets:
| Edición de sgcWebSockets | Versión de Indy |
| sgcWebSockets | Standard |
| sgcWebSockets min | Standard |
| sgcWebSockets min Indy* | Personalizado |
*sgcWebSockets_min_indy es igual a la edición Enterprise de sgcWebSockets.
El uso de la versión personalizada de Indy se define en el archivo "sgcVer.inc" ubicado en la carpeta de origen. Existe una directiva de compilador llamada "SGC_CUSTOM_INDY" que habilita o deshabilita el uso de esta versión de Indy. Si dispone de la edición Enterprise y desea deshabilitar el uso del Indy personalizado, simplemente elimine la siguiente directiva de compilador:
{$DEFINE SGC_CUSTOM_INDY}
Por supuesto, si habilita SGC_CUSTOM_INDY pero no tiene en la carpeta de origen las unidades de la versión de Indy personalizada requeridas, esta definición del compilador no funcionará.
El uso de la versión personalizada de Indy no se limita a los componentes sgcWebSockets. Algunos clientes desean aprovechar las nuevas funcionalidades de esta versión personalizada de Indy en componentes Indy estándar como SMTP, por ejemplo, para poder usar TLS 1.3 al enviar correos electrónicos, utilizar servidores FTP, etc. La edición ALL-ACCESS de eSeGeCe proporciona un paquete Indy completo adicional con todas estas funcionalidades. Este paquete, llamado "sgcIndy package", incluye la biblioteca Indy completa con soporte para openSSL 1.1.1 y openSSL 3.0.0. Por lo tanto, primero debe desinstalar la biblioteca Indy instalada actualmente en su IDE y luego instalar esta versión; el proceso de instalación del paquete sgcIndy es exactamente el mismo que para cualquier biblioteca Indy (aquí las unidades no se renombran).
Cuando desee utilizar las bibliotecas openSSL, simplemente establezca la variable global OPENSSL_API_VERSION con la versión de la API de OpenSSL deseada antes de cargar las bibliotecas OpenSSL. Esta variable global se encuentra en la unidad IdSSLOpenSSLHeaders.
Ejemplo: para usar las bibliotecas openSSL 1.1.1
OPENSSL_API_VERSION := opSSL_1_1;
Al utilizar eSeGeCe ALL-ACCESS y el paquete sgcIndy en la misma aplicación, los fuentes pueden estar duplicados porque la versión Enterprise de sgcWebSockets utiliza una versión personalizada de Indy con las unidades de Indy renombradas. Esto significa que, por ejemplo, unidades como sgcIdGlobal.pas e IdGlobal.pas se compilarán en la misma aplicación (la primera se usa al utilizar cualquier componente del paquete Enterprise de sgcWebSockets y la segunda al usar cualquier componente del paquete sgcIndy, como ftp, smtp...).
Para evitar este comportamiento, el paquete sgcWebSockets puede configurarse para utilizar la versión instalada de sgcIndy y seguir aprovechando todos los componentes. Para hacerlo, siga las instrucciones a continuación:
1. Abra el archivo sgcVer.inc, ubicado en la carpeta Source del paquete sgcWebSockets.
2. Deshabilite la directiva de compilador: SGC_CUSTOM_INDY. Esta opción indica al compilador que los archivos que comienzan por sgcId*.pas existen y deben usarse al compilar el paquete Enterprise de sgcWebSockets.
3. Habilitar el siguiente compilador: SGC_INDY_LIB. Esta opción indica al compilador que el paquete sgcIndy está instalado y debe usarse al compilar el paquete.
{$DEFINE SGC_INDY_LIB}
Con la configuración anterior, el paquete sgcWebSockets Enterprise utilizará el paquete sgcIndy instalado y se habilitarán todas las características que hacen uso de este paquete (como http/2, IOCP, openSSL 3.0...).