node-red-contrib-tcp-client-server-avd 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NodeRedTCP/README.md +408 -0
- package/NodeRedTCP/SPECIFICATIE.md +460 -0
- package/NodeRedTCP/nodes/tcp-client-server-avd.html +298 -0
- package/NodeRedTCP/nodes/tcp-client-server-avd.js +606 -0
- package/NodeRedTCP/package.json +32 -0
- package/README.md +355 -0
- package/SPECIFICATIE.md +402 -0
- package/nodes/tcp-client-server.html +298 -0
- package/nodes/tcp-client-server.js +606 -0
- package/package.json +27 -0
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
# Node-RED TCP Client/Server Node (AVD)
|
|
2
|
+
|
|
3
|
+
Een flexibele Node-RED node die functioneert als TCP client en/of TCP server, met uitgebreide configuratiemogelijkheden en foutafhandeling.
|
|
4
|
+
|
|
5
|
+
## Installatie
|
|
6
|
+
|
|
7
|
+
### Via Node-RED Manage Palette (aanbevolen voor lokale installatie)
|
|
8
|
+
|
|
9
|
+
1. Open de Node-RED webinterface
|
|
10
|
+
2. Ga naar **Menu** → **Manage palette**
|
|
11
|
+
3. Klik op de **Install** tab
|
|
12
|
+
4. Klik op **install from** of gebruik het upload veld
|
|
13
|
+
5. Geef het volledige pad op naar het `.tgz` bestand:
|
|
14
|
+
```
|
|
15
|
+
C:\Users\Arie\Desktop\NodeRedTCP\node-red-contrib-tcp-client-server-avd-1.0.0.tgz
|
|
16
|
+
```
|
|
17
|
+
Of upload het bestand direct
|
|
18
|
+
6. Klik op **Install**
|
|
19
|
+
7. Herstart Node-RED (indien nodig)
|
|
20
|
+
|
|
21
|
+
### Via npm (aanbevolen voor gepubliceerde packages)
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm install node-red-contrib-tcp-client-server-avd
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Handmatige installatie
|
|
28
|
+
|
|
29
|
+
1. Clone of download dit project
|
|
30
|
+
2. Kopieer de map naar je Node-RED `nodes` directory (meestal `~/.node-red/nodes/`)
|
|
31
|
+
3. Installeer dependencies:
|
|
32
|
+
```bash
|
|
33
|
+
cd ~/.node-red/nodes/node-red-contrib-tcp-client-server-avd
|
|
34
|
+
npm install
|
|
35
|
+
```
|
|
36
|
+
4. Herstart Node-RED
|
|
37
|
+
|
|
38
|
+
## Functionaliteiten
|
|
39
|
+
|
|
40
|
+
### TCP Client Mode
|
|
41
|
+
- Automatisch verbinden bij flow start (optioneel)
|
|
42
|
+
- Handmatig verbinden/verbreken via messages
|
|
43
|
+
- Automatische herconnectie met configureerbare instellingen
|
|
44
|
+
- Ondersteuning voor verschillende dataformaten (String, Buffer, JSON, Hex)
|
|
45
|
+
- Message delimiter ondersteuning voor message framing
|
|
46
|
+
- Keep-alive optie
|
|
47
|
+
|
|
48
|
+
### TCP Server Mode
|
|
49
|
+
- Automatisch starten bij flow start (optioneel)
|
|
50
|
+
- Luisteren op geconfigureerde poort
|
|
51
|
+
- Meerdere gelijktijdige client verbindingen
|
|
52
|
+
- Unieke client identificatie
|
|
53
|
+
- Broadcast naar alle clients of verzenden naar specifieke client
|
|
54
|
+
- Zelfde dataformaat ondersteuning als client mode
|
|
55
|
+
|
|
56
|
+
### Gecombineerde Mode
|
|
57
|
+
- Gebruik zowel client als server functionaliteit in één node
|
|
58
|
+
- Onafhankelijke configuratie voor beide modi
|
|
59
|
+
|
|
60
|
+
## Gebruik
|
|
61
|
+
|
|
62
|
+
### Basis Configuratie
|
|
63
|
+
|
|
64
|
+
1. Sleep de node naar je flow
|
|
65
|
+
2. Dubbelklik op de node om te configureren
|
|
66
|
+
3. Selecteer de gewenste mode: TCP Client, TCP Server, of TCP Client & Server
|
|
67
|
+
4. Configureer de instellingen volgens je behoeften
|
|
68
|
+
|
|
69
|
+
### Client Mode - Verbinden
|
|
70
|
+
|
|
71
|
+
**Automatisch verbinden:**
|
|
72
|
+
- Zet "Auto Verbinden" aan
|
|
73
|
+
- De client verbindt automatisch bij flow start
|
|
74
|
+
|
|
75
|
+
**Handmatig verbinden:**
|
|
76
|
+
- Zet "Auto Verbinden" uit
|
|
77
|
+
- Stuur een message met `topic: "connect"` naar de node
|
|
78
|
+
|
|
79
|
+
**Verbinden verbreken:**
|
|
80
|
+
- Stuur een message met `topic: "disconnect"` naar de node
|
|
81
|
+
|
|
82
|
+
### Server Mode - Server Beheer
|
|
83
|
+
|
|
84
|
+
**Automatisch starten:**
|
|
85
|
+
- Zet "Auto Start" aan
|
|
86
|
+
- De server start automatisch bij flow start
|
|
87
|
+
|
|
88
|
+
**Handmatig starten:**
|
|
89
|
+
- Zet "Auto Start" uit
|
|
90
|
+
- Stuur een message met `topic: "start"` naar de node
|
|
91
|
+
|
|
92
|
+
**Server stoppen:**
|
|
93
|
+
- Stuur een message met `topic: "stop"` naar de node
|
|
94
|
+
|
|
95
|
+
## Message Formats
|
|
96
|
+
|
|
97
|
+
### Input Messages (naar Node)
|
|
98
|
+
|
|
99
|
+
#### Client Mode
|
|
100
|
+
|
|
101
|
+
**Verbinden:**
|
|
102
|
+
```javascript
|
|
103
|
+
{ topic: "connect" }
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**Verbreken:**
|
|
107
|
+
```javascript
|
|
108
|
+
{ topic: "disconnect" }
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Data verzenden:**
|
|
112
|
+
```javascript
|
|
113
|
+
{
|
|
114
|
+
topic: "send",
|
|
115
|
+
payload: "data om te verzenden" // string, buffer, of object
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Als er geen topic is opgegeven, wordt de payload automatisch verzonden.
|
|
120
|
+
|
|
121
|
+
#### Server Mode
|
|
122
|
+
|
|
123
|
+
**Server starten:**
|
|
124
|
+
```javascript
|
|
125
|
+
{ topic: "start" }
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Server stoppen:**
|
|
129
|
+
```javascript
|
|
130
|
+
{ topic: "stop" }
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Data verzenden naar specifieke client:**
|
|
134
|
+
```javascript
|
|
135
|
+
{
|
|
136
|
+
topic: "send",
|
|
137
|
+
clientId: "client-unique-id",
|
|
138
|
+
payload: "data om te verzenden"
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Data verzenden naar alle clients (broadcast):**
|
|
143
|
+
```javascript
|
|
144
|
+
{
|
|
145
|
+
topic: "broadcast",
|
|
146
|
+
payload: "data om te verzenden"
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Output Messages (van Node)
|
|
151
|
+
|
|
152
|
+
#### Client Mode
|
|
153
|
+
|
|
154
|
+
**Verbindingsstatus:**
|
|
155
|
+
```javascript
|
|
156
|
+
{
|
|
157
|
+
topic: "status",
|
|
158
|
+
payload: "connected" | "disconnected" | "error",
|
|
159
|
+
status: "connected" | "disconnected" | "error",
|
|
160
|
+
error: "error message (indien van toepassing)"
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**Ontvangen data:**
|
|
165
|
+
```javascript
|
|
166
|
+
{
|
|
167
|
+
topic: "data",
|
|
168
|
+
payload: "ontvangen data",
|
|
169
|
+
timestamp: "ISO timestamp"
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
#### Server Mode
|
|
174
|
+
|
|
175
|
+
**Server status:**
|
|
176
|
+
```javascript
|
|
177
|
+
{
|
|
178
|
+
topic: "status",
|
|
179
|
+
payload: "listening" | "stopped" | "error",
|
|
180
|
+
port: 1234,
|
|
181
|
+
error: "error message (indien van toepassing)"
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**Client verbinding:**
|
|
186
|
+
```javascript
|
|
187
|
+
{
|
|
188
|
+
topic: "client/connected",
|
|
189
|
+
clientId: "unique-client-id",
|
|
190
|
+
remoteAddress: "client-ip",
|
|
191
|
+
remotePort: "client-port"
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**Client verbreking:**
|
|
196
|
+
```javascript
|
|
197
|
+
{
|
|
198
|
+
topic: "client/disconnected",
|
|
199
|
+
clientId: "unique-client-id"
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**Ontvangen data:**
|
|
204
|
+
```javascript
|
|
205
|
+
{
|
|
206
|
+
topic: "data",
|
|
207
|
+
payload: "ontvangen data",
|
|
208
|
+
clientId: "unique-client-id",
|
|
209
|
+
remoteAddress: "client-ip",
|
|
210
|
+
remotePort: "client-port",
|
|
211
|
+
timestamp: "ISO timestamp"
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Configuratie Opties
|
|
216
|
+
|
|
217
|
+
### Client Mode
|
|
218
|
+
|
|
219
|
+
- **Host**: Server hostname of IP adres (standaard: "localhost")
|
|
220
|
+
- **Port**: Server poort nummer (standaard: 8080)
|
|
221
|
+
- **IP Versie**: IPv4 of IPv6 (standaard: IPv4)
|
|
222
|
+
- **Auto Verbinden**: Automatisch verbinden bij flow start (standaard: true)
|
|
223
|
+
- **Herconnectie**: Automatische herconnectie bij verbroken verbinding (standaard: true)
|
|
224
|
+
- **Reconnect Interval**: Tijd tussen reconnect pogingen in seconden (standaard: 5)
|
|
225
|
+
- **Max Reconnect Pogingen**: Maximum aantal reconnect pogingen (0 = oneindig, standaard: 0)
|
|
226
|
+
- **Connection Timeout**: Timeout voor connectiepogingen in seconden (standaard: 10)
|
|
227
|
+
- **Input Format**: Data formaat voor verzenden (String, Buffer, JSON, Hex String)
|
|
228
|
+
- **Output Format**: Data formaat voor ontvangen (String, Buffer, JSON, Hex String)
|
|
229
|
+
- **Encoding**: Character encoding voor String format (UTF-8, ASCII, Latin1, Base64)
|
|
230
|
+
- **Message Delimiter**: Optionele delimiter voor message framing (bijv. `\n` of `\r\n`)
|
|
231
|
+
- **Keep-Alive**: TCP keep-alive optie (standaard: false)
|
|
232
|
+
|
|
233
|
+
### Server Mode
|
|
234
|
+
|
|
235
|
+
- **Listen Port**: Poort waarop de server luistert (standaard: 8080)
|
|
236
|
+
- **Bind Address**: IP adres om aan te binden (standaard: "0.0.0.0" = alle interfaces)
|
|
237
|
+
- **IP Versie**: IPv4 of IPv6 (standaard: IPv4)
|
|
238
|
+
- **Auto Start**: Automatisch starten bij flow start (standaard: true)
|
|
239
|
+
- **Max Connections**: Maximum aantal gelijktijdige verbindingen (0 = onbeperkt, standaard: 0)
|
|
240
|
+
- **Connection Timeout**: Timeout voor client verbindingen in seconden (standaard: 600)
|
|
241
|
+
- **Input Format**: Data formaat voor verzenden (String, Buffer, JSON, Hex String)
|
|
242
|
+
- **Output Format**: Data formaat voor ontvangen (String, Buffer, JSON, Hex String)
|
|
243
|
+
- **Encoding**: Character encoding voor String format (UTF-8, ASCII, Latin1, Base64)
|
|
244
|
+
- **Message Delimiter**: Optionele delimiter voor message framing (bijv. `\n` of `\r\n`)
|
|
245
|
+
- **Keep-Alive**: TCP keep-alive optie (standaard: false)
|
|
246
|
+
|
|
247
|
+
## Status Weergave
|
|
248
|
+
|
|
249
|
+
De node toont verschillende status indicatoren:
|
|
250
|
+
|
|
251
|
+
### Client Mode
|
|
252
|
+
- **Groen (verbonden)**: Succesvol verbonden met server
|
|
253
|
+
- **Rood (fout)**: Verbindingsfout of verbreken
|
|
254
|
+
- **Grijs (niet verbonden)**: Niet verbonden
|
|
255
|
+
- **Geel (verbinden)**: Verbinding wordt tot stand gebracht
|
|
256
|
+
|
|
257
|
+
### Server Mode
|
|
258
|
+
- **Groen (luisterend)**: Server luistert actief op poort
|
|
259
|
+
- **Rood (gestopt/fout)**: Server is gestopt of fout opgetreden
|
|
260
|
+
- **Blauw (actief)**: Server actief met X verbindingen
|
|
261
|
+
|
|
262
|
+
## Voorbeelden
|
|
263
|
+
|
|
264
|
+
### Voorbeeld 1: Basis TCP Client
|
|
265
|
+
|
|
266
|
+
Een eenvoudige TCP client die verbindt met een server en data verzendt/ontvangt.
|
|
267
|
+
|
|
268
|
+
**Flow:**
|
|
269
|
+
```
|
|
270
|
+
[Inject] → [TCP Client Node] → [Debug]
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
**Configuratie:**
|
|
274
|
+
- Mode: TCP Client
|
|
275
|
+
- Host: localhost
|
|
276
|
+
- Port: 8080
|
|
277
|
+
- Auto Verbinden: aan
|
|
278
|
+
|
|
279
|
+
### Voorbeeld 2: Basis TCP Server
|
|
280
|
+
|
|
281
|
+
Een TCP server die luistert op poort 8080 en data ontvangt van clients.
|
|
282
|
+
|
|
283
|
+
**Flow:**
|
|
284
|
+
```
|
|
285
|
+
[TCP Server Node] → [Debug]
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
**Configuratie:**
|
|
289
|
+
- Mode: TCP Server
|
|
290
|
+
- Listen Port: 8080
|
|
291
|
+
- Auto Start: aan
|
|
292
|
+
|
|
293
|
+
### Voorbeeld 3: Client met Reconnect
|
|
294
|
+
|
|
295
|
+
Een TCP client met automatische herconnectie.
|
|
296
|
+
|
|
297
|
+
**Configuratie:**
|
|
298
|
+
- Mode: TCP Client
|
|
299
|
+
- Host: 192.168.1.100
|
|
300
|
+
- Port: 8080
|
|
301
|
+
- Auto Verbinden: aan
|
|
302
|
+
- Herconnectie: aan
|
|
303
|
+
- Reconnect Interval: 5 seconden
|
|
304
|
+
- Max Reconnect Pogingen: 0 (oneindig)
|
|
305
|
+
|
|
306
|
+
### Voorbeeld 4: Server met Meerdere Clients
|
|
307
|
+
|
|
308
|
+
Een TCP server die data ontvangt van meerdere clients en responses terugstuurt.
|
|
309
|
+
|
|
310
|
+
**Flow:**
|
|
311
|
+
```
|
|
312
|
+
[TCP Server Node] → [Function Node] → [TCP Server Node]
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
**Function Node code:**
|
|
316
|
+
```javascript
|
|
317
|
+
// Echo de data terug naar dezelfde client
|
|
318
|
+
msg.topic = "send";
|
|
319
|
+
msg.payload = "Echo: " + msg.payload;
|
|
320
|
+
return msg;
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
## Troubleshooting
|
|
324
|
+
|
|
325
|
+
### Client kan niet verbinden
|
|
326
|
+
|
|
327
|
+
1. Controleer of de server draait en bereikbaar is
|
|
328
|
+
2. Controleer firewall instellingen
|
|
329
|
+
3. Controleer host en port configuratie
|
|
330
|
+
4. Bekijk de status van de node voor foutmeldingen
|
|
331
|
+
|
|
332
|
+
### Server kan niet starten
|
|
333
|
+
|
|
334
|
+
1. Controleer of de poort niet al in gebruik is
|
|
335
|
+
2. Controleer of je rechten hebt om op de poort te luisteren (voor poorten < 1024 op Linux/Mac)
|
|
336
|
+
3. Controleer firewall instellingen
|
|
337
|
+
4. Bekijk de status van de node voor foutmeldingen
|
|
338
|
+
|
|
339
|
+
### Data wordt niet correct ontvangen
|
|
340
|
+
|
|
341
|
+
1. Controleer de Output Format configuratie
|
|
342
|
+
2. Controleer de Encoding instelling
|
|
343
|
+
3. Voor message framing, gebruik de Message Delimiter optie
|
|
344
|
+
4. Voor binary data, gebruik Buffer format
|
|
345
|
+
|
|
346
|
+
## Bekende Beperkingen
|
|
347
|
+
|
|
348
|
+
- TLS/SSL ondersteuning is nog niet geïmplementeerd (toekomstige versie)
|
|
349
|
+
- UDP protocol wordt niet ondersteund (alleen TCP)
|
|
350
|
+
- Rate limiting is nog niet beschikbaar
|
|
351
|
+
|
|
352
|
+
## Licentie
|
|
353
|
+
|
|
354
|
+
MIT
|
|
355
|
+
|
|
356
|
+
## Versie Geschiedenis
|
|
357
|
+
|
|
358
|
+
### Versie 1.0.0
|
|
359
|
+
- Initiele release
|
|
360
|
+
- TCP Client functionaliteit
|
|
361
|
+
- TCP Server functionaliteit
|
|
362
|
+
- Gecombineerde mode
|
|
363
|
+
- String, Buffer, JSON, en Hex data formaten
|
|
364
|
+
- Automatische herconnectie
|
|
365
|
+
- Message delimiter ondersteuning
|
|
366
|
+
- IPv4 en IPv6 ondersteuning
|
|
367
|
+
- Keep-alive optie
|
|
368
|
+
- Meerdere client verbindingen (server mode)
|
|
369
|
+
- Package structuur geoptimaliseerd:
|
|
370
|
+
- Bestandsnamen: `tcp-client-server-avd.js/html`
|
|
371
|
+
- package.json bijgewerkt met `main` en `files` velden
|
|
372
|
+
- Node configuratie vereenvoudigd (automatische HTML detectie)
|
|
373
|
+
- Distributie via `npm pack` voor correcte package structuur
|
|
374
|
+
- Installatie via Node-RED Manage Palette ondersteund
|
|
375
|
+
|
|
376
|
+
## Package Details
|
|
377
|
+
|
|
378
|
+
### Package Structuur
|
|
379
|
+
```
|
|
380
|
+
node-red-contrib-tcp-client-server-avd/
|
|
381
|
+
├── package.json
|
|
382
|
+
├── README.md
|
|
383
|
+
├── SPECIFICATIE.md
|
|
384
|
+
└── nodes/
|
|
385
|
+
├── tcp-client-server-avd.js
|
|
386
|
+
└── tcp-client-server-avd.html
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
### Node Type
|
|
390
|
+
- **Node type naam**: `tcp-client-server-avd`
|
|
391
|
+
- **Package naam**: `node-red-contrib-tcp-client-server-avd`
|
|
392
|
+
- **Versie**: 1.0.0
|
|
393
|
+
|
|
394
|
+
### Distributie
|
|
395
|
+
Het package wordt gedistribueerd als `.tgz` bestand dat kan worden geïnstalleerd via:
|
|
396
|
+
- Node-RED Manage Palette (upload of pad)
|
|
397
|
+
- npm (na publicatie)
|
|
398
|
+
- Handmatige installatie
|
|
399
|
+
|
|
400
|
+
Om een nieuw distributie-bestand te maken:
|
|
401
|
+
```bash
|
|
402
|
+
cd NodeRedTCP
|
|
403
|
+
npm pack
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
## Ondersteuning
|
|
407
|
+
|
|
408
|
+
Voor vragen, problemen of suggesties, open een issue op de GitHub repository.
|