node-red-contrib-tcp-client-server-avd 1.1.1

Node-RED node voor TCP client en/of server functionaliteit

npm install node-red-contrib-tcp-client-server-avd

Node-RED TCP Client/Server Node (AVD)

Een flexibele Node-RED node die functioneert als TCP client en/of TCP server, met uitgebreide configuratiemogelijkheden en foutafhandeling.

Installatie

Via npm (aanbevolen)

npm install node-red-contrib-tcp-client-server-avd

Handmatige installatie

  1. Clone of download dit project
  2. Kopieer de map naar je Node-RED nodes directory (meestal ~/.node-red/nodes/)
  3. Installeer dependencies:
cd ~/.node-red/nodes/node-red-contrib-tcp-client-server-avd
npm install
  1. Herstart Node-RED

Functionaliteiten

TCP Client Mode

  • Automatisch verbinden bij flow start (optioneel)
  • Handmatig verbinden/verbreken via messages
  • Robuuste automatische herconnectie (detectie via error, close en write-fouten)
  • Snelle herverbinding (standaard 2 sec, minimum 1 sec)
  • Ondersteuning voor verschillende dataformaten (String, Buffer, JSON, Hex)
  • Message delimiter ondersteuning voor message framing
  • Keep-alive optie (aanbevolen voor detectie van half-open verbindingen)

TCP Server Mode

  • Automatisch starten bij flow start (optioneel)
  • Luisteren op geconfigureerde poort
  • Meerdere gelijktijdige client verbindingen
  • Unieke client identificatie
  • Broadcast naar alle clients of verzenden naar specifieke client
  • Zelfde dataformaat ondersteuning als client mode

Gecombineerde Mode

  • Gebruik zowel client als server functionaliteit in één node
  • Onafhankelijke configuratie voor beide modi

Gebruik

Basis Configuratie

  1. Sleep de node naar je flow
  2. Dubbelklik op de node om te configureren
  3. Selecteer de gewenste mode: TCP Client, TCP Server, of TCP Client & Server
  4. Configureer de instellingen volgens je behoeften

Client Mode - Verbinden

Automatisch verbinden:

  • Zet "Auto Verbinden" aan
  • De client verbindt automatisch bij flow start

Handmatig verbinden:

  • Zet "Auto Verbinden" uit
  • Stuur een message met topic: "connect" naar de node

Verbinden verbreken:

  • Stuur een message met topic: "disconnect" naar de node

Server Mode - Server Beheer

Automatisch starten:

  • Zet "Auto Start" aan
  • De server start automatisch bij flow start

Handmatig starten:

  • Zet "Auto Start" uit
  • Stuur een message met topic: "start" naar de node

Server stoppen:

  • Stuur een message met topic: "stop" naar de node

Message Formats

Input Messages (naar Node)

Client Mode

Verbinden:

{ topic: "connect" }

Verbreken:

{ topic: "disconnect" }

Data verzenden:

{
  topic: "send",
  payload: "data om te verzenden" // string, buffer, of object
}

Als er geen topic is opgegeven, wordt de payload automatisch verzonden.

Server Mode

Server starten:

{ topic: "start" }

Server stoppen:

{ topic: "stop" }

Data verzenden naar specifieke client:

{
  topic: "send",
  clientId: "client-unique-id",
  payload: "data om te verzenden"
}

Data verzenden naar alle clients (broadcast):

{
  topic: "broadcast",
  payload: "data om te verzenden"
}

Output Messages (van Node)

Client Mode

Verbindingsstatus:

{
  topic: "status",
  payload: "connected" | "disconnected" | "error",
  status: "connected" | "disconnected" | "error",
  error: "error message (indien van toepassing)"
}

Ontvangen data:

{
  topic: "data",
  payload: "ontvangen data",
  timestamp: "ISO timestamp"
}

Server Mode

Server status:

{
  topic: "status",
  payload: "listening" | "stopped" | "error",
  port: 1234,
  error: "error message (indien van toepassing)"
}

Client verbinding:

{
  topic: "client/connected",
  clientId: "unique-client-id",
  remoteAddress: "client-ip",
  remotePort: "client-port"
}

Client verbreking:

{
  topic: "client/disconnected",
  clientId: "unique-client-id"
}

Ontvangen data:

{
  topic: "data",
  payload: "ontvangen data",
  clientId: "unique-client-id",
  remoteAddress: "client-ip",
  remotePort: "client-port",
  timestamp: "ISO timestamp"
}

ClientId bepalen (Server Mode)

Om naar een specifieke client te sturen heb je de clientId nodig. Deze is beschikbaar in:

  1. client/connected – bij elke nieuwe clientverbinding
  2. data – bij elk ontvangen bericht (via msg.clientId)

Bewaar de clientId uit een van deze messages en gebruik deze in je send message met clientId: msg.clientId.

Configuratie Opties

Client Mode

  • Host: Server hostname of IP adres (standaard: "localhost")
  • Port: Server poort nummer (standaard: 8080)
  • IP Versie: IPv4 of IPv6 (standaard: IPv4)
  • Auto Verbinden: Automatisch verbinden bij flow start (standaard: true)
  • Herconnectie: Automatische herconnectie bij verbroken verbinding (standaard: true)
  • Reconnect Interval: Tijd tussen reconnect pogingen in seconden (standaard: 2, minimum: 1)
  • Max Reconnect Pogingen: Maximum aantal reconnect pogingen (0 = oneindig, standaard: 0)
  • Connection Timeout: Timeout voor het opzetten van de verbinding in seconden (standaard: 10). Wordt na succesvol verbinden uitgeschakeld; geen idle-timeout.
  • Input Format: Data formaat voor verzenden (String, Buffer, JSON, Hex String)
  • Output Format: Data formaat voor ontvangen (String, Buffer, JSON, Hex String)
  • Encoding: Character encoding voor String format (UTF-8, ASCII, Latin1, Base64)
  • Message Delimiter: Optionele delimiter voor message framing (bijv. \n of \r\n)
  • Keep-Alive: TCP keep-alive optie (standaard: false). Aanbevolen voor vroegtijdige detectie van verbroken verbindingen.

Server Mode

  • Listen Port: Poort waarop de server luistert (standaard: 8080)
  • Bind Address: IP adres om aan te binden (standaard: "0.0.0.0" = alle interfaces)
  • IP Versie: IPv4 of IPv6 (standaard: IPv4)
  • Auto Start: Automatisch starten bij flow start (standaard: true)
  • Max Connections: Maximum aantal gelijktijdige verbindingen (0 = onbeperkt, standaard: 0)
  • Connection Timeout: Timeout voor client verbindingen in seconden (standaard: 600)
  • Input Format: Data formaat voor verzenden (String, Buffer, JSON, Hex String)
  • Output Format: Data formaat voor ontvangen (String, Buffer, JSON, Hex String)
  • Encoding: Character encoding voor String format (UTF-8, ASCII, Latin1, Base64)
  • Message Delimiter: Optionele delimiter voor message framing (bijv. \n of \r\n)
  • Keep-Alive: TCP keep-alive optie (standaard: false). Aanbevolen voor vroegtijdige detectie van verbroken verbindingen.

Status Weergave

De node toont verschillende status indicatoren:

Client Mode

  • Groen (verbonden): Succesvol verbonden met server
  • Rood (fout): Verbindingsfout of verbreken
  • Grijs (niet verbonden): Niet verbonden
  • Geel (verbinden): Verbinding wordt tot stand gebracht

Server Mode

  • Groen (luisterend): Server luistert actief op poort
  • Rood (gestopt/fout): Server is gestopt of fout opgetreden
  • Blauw (actief): Server actief met X verbindingen

Voorbeelden

Voorbeeld 1: Basis TCP Client

Een eenvoudige TCP client die verbindt met een server en data verzendt/ontvangt.

Flow:

[Inject] → [TCP Client Node] → [Debug]

Configuratie:

  • Mode: TCP Client
  • Host: localhost
  • Port: 8080
  • Auto Verbinden: aan

Voorbeeld 2: Basis TCP Server

Een TCP server die luistert op poort 8080 en data ontvangt van clients.

Flow:

[TCP Server Node] → [Debug]

Configuratie:

  • Mode: TCP Server
  • Listen Port: 8080
  • Auto Start: aan

Voorbeeld 3: Client met Reconnect

Een TCP client met automatische herconnectie.

Configuratie:

  • Mode: TCP Client
  • Host: 192.168.1.100
  • Port: 8080
  • Auto Verbinden: aan
  • Herconnectie: aan
  • Reconnect Interval: 2 seconden (of 1 voor snellere herverbinding)
  • Max Reconnect Pogingen: 0 (oneindig)

Voorbeeld 4: Server met Meerdere Clients

Een TCP server die data ontvangt van meerdere clients en responses terugstuurt.

Flow:

[TCP Server Node] → [Function Node] → [TCP Server Node]

Function Node code:

// Echo de data terug naar dezelfde client (clientId uit ontvangen bericht)
if (msg.topic === "data") {
    return {
        topic: "send",
        clientId: msg.clientId,
        payload: "Echo: " + msg.payload
    };
}
return null;

Troubleshooting

Client kan niet verbinden

  1. Controleer of de server draait en bereikbaar is
  2. Controleer firewall instellingen
  3. Controleer host en port configuratie
  4. Bekijk de status van de node voor foutmeldingen

Server kan niet starten

  1. Controleer of de poort niet al in gebruik is
  2. Controleer of je rechten hebt om op de poort te luisteren (voor poorten < 1024 op Linux/Mac)
  3. Controleer firewall instellingen
  4. Bekijk de status van de node voor foutmeldingen

Data wordt niet correct ontvangen

  1. Controleer de Output Format configuratie
  2. Controleer de Encoding instelling
  3. Voor message framing, gebruik de Message Delimiter optie
  4. Voor binary data, gebruik Buffer format

Bekende Beperkingen

  • TLS/SSL ondersteuning is nog niet geïmplementeerd (toekomstige versie)
  • UDP protocol wordt niet ondersteund (alleen TCP)
  • Rate limiting is nog niet beschikbaar

Licentie

MIT

Versie Geschiedenis

Versie 1.1.0

  • Robuuste verbindingscontrole: error handler triggert socket.destroy() voor betrouwbare herverbinding
  • Write-error detectie: bij mislukte verzending wordt herverbinding gestart
  • Snellere herverbinding: standaard 2 sec, minimum 1 sec
  • Geen idle-timeout na verbinden: verbinding blijft open zolang beide partijen verbonden zijn
  • Voorkomen dubbele reconnect en race conditions

Versie 1.0.0

  • Initiele release
  • TCP Client functionaliteit
  • TCP Server functionaliteit
  • Gecombineerde mode
  • String, Buffer, JSON, en Hex data formaten
  • Automatische herconnectie
  • Message delimiter ondersteuning

Ondersteuning

Voor vragen, problemen of suggesties, open een issue op de GitHub repository.

Node Info

Version: 1.1.1
Updated 1 day ago
License: MIT
Rating: 5.0 1

Categories

Actions

Rate:

Downloads

179 in the last week

Nodes

  • tcp-client-server-avd

Keywords

  • node-red
  • tcp
  • client
  • server
  • socket

Maintainers