Ir al contenido

Capítulo 35: Real-time con SignalR (Patrón Bridge)

Cap 35: Real-time con SignalR (Patrón Bridge)

Sección titulada «Cap 35: Real-time con SignalR (Patrón Bridge)»

Parte XIII - Sección 27 - Nivel: Experto

Una de las demandas más “modernas” en la industria es tener dashboards en planta que muestren en tiempo real qué está haciendo cada estación de ingeniería.

SignalR (de Microsoft) es la tecnología estándar para esto, permitiendo WebSockets bidireccionales. Sin embargo, integrar el cliente nativo de SignalR en un Script de EPLAN (que corre bajo versiones antiguas de .NET Framework con referencias limitadas) es un dolor de cabeza de dependencias (Newtonsoft.Json, versiones de System.Threading, etc).

La solución elegante que usan los arquitectos de software es desacoplar:

  1. EPLAN (Script): No sabe nada de WebSockets. Solo sabe hacer HTTP POST (que es nativo y fácil).
  2. Servidor Intermedio (API): Recibe el POST y lo retransmite vía SignalR a los navegadores conectados.
[EPLAN Script] --POST--> [ASP.NET Core Server] --WebSockets--> [Navegador Dashboard]

Como vemos en 01_SignalR_Bridge.cs, el código en EPLAN es notablemente simple. Solo enviamos un JSON a un endpoint como /api/broadcast.

client.PostAsync("http://server/api/broadcast", content).Result;

Esto hace que nuestros scripts sean ligeros y no se rompan cuando Microsoft actualice las librerías de SignalR.

Aunque no entraremos en código de servidor detallado (se sale del alcance de scripting de EPLAN), un controlador simple en .NET Core recibiría el mensaje:

[HttpPost("broadcast")]
public async Task<IActionResult> Post([FromBody] MsgPayload payload)
{
// Reenviar a todos los clientes conectados
await _hubContext.Clients.All.SendAsync("ReceiveMessage", payload.Message);
return Ok();
}
  • No intentes cargar DLLs complejas de NuGet en scripts de EPLAN si puedes evitarlo.
  • Usa HTTP como “lengua franca” para comunicar EPLAN con sistemas modernos.
  • El patrón Bridge permite dashboards en tiempo real sin modificar el núcleo de EPLAN.

En el último capítulo, veremos la inversión de control: Cómo una aplicación externa maneja a EPLAN como una marioneta usando Remoting.