Berichten naar clients uitzenden
Leer hoe u berichten vanaf de server naar alle verbonden clients of naar specifieke clients verstuurt.
Berichten naar clients uitzenden is een gratis Programmeren van WebSockets en realtime-systemen-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Programmeren van WebSockets en realtime-systemen. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Programmeren van WebSockets en realtime-systemen bevat in totaal 4 lessen.
Wat is omroepen?
Realtime-toepassingen moeten vaak updates tegelijk naar veel gebruikers sturen. Denk bijvoorbeeld aan een live sportscore of een chatruimte.
Bij omroepen stuurt je server één bericht dat wordt afgeleverd bij alle momenteel verbonden clients.
Waarom berichten omroepen?
Omroepen is een fundamenteel patroon voor veel interactieve toepassingen:
- Live-updates: Aandelenkoersen, nieuwswaarschuwingen en sensorgegevens.
- Chatruimtes: Nieuwe berichten die voor alle deelnemers zichtbaar zijn.
- Meldingen: Systeembrede waarschuwingen voor alle actieve gebruikers.
- Multiplayergames: Spelerbewegingen en veranderingen in de spelstatus voor alle spelers.
Lijst met clients van de server
Om berichten om te roepen, moet je WebSocket-server weten wie er verbonden is. De bibliotheek ws (onze Node.js-bibliotheek voor WebSocket-servers) houdt automatisch alle actieve verbindingen bij.
Wanneer een client verbinding maakt, wordt het WebSocket-object ervan aan een interne lijst toegevoegd. Wanneer de client de verbinding verbreekt, wordt het object verwijderd.
Verbonden clients benaderen
De bibliotheek ws stelt de eigenschap wss.clients beschikbaar. Dit is een JavaScript-Set met alle momenteel verbonden WebSocket-clientobjecten.
We kunnen deze Set doorlopen om elk afzonderlijk clientbericht te verzenden.
Volledig omroepen implementeren
Zo pas je je server aan om elk bericht dat deze ontvangt naar alle verbonden clients om te roepen:
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', ws => {
console.log('Client connected');
ws.on('message', message => {
// Convert Buffer to string for display/processing
const msg = message.toString();
console.log(`Received: ${msg}`);
// Broadcast the received message to all connected clients
wss.clients.forEach(client => {
if (client !== ws && client.readyState === WebSocket.OPEN) {
client.send(`Broadcast: ${msg}`);
}
});
// Also send back to the sender as confirmation
if (ws.readyState === WebSocket.OPEN) {
ws.send(`You sent: ${msg}`);
}
});
ws.on('close', () => {
console.log('Client disconnected');
});
ws.send('Welcome to the broadcast server!');
});
console.log('WebSocket server started on port 8080');Uitleg van de omroepcode
Laten we de omroeplogica opsplitsen:
wss.clients.forEach(client => { ... }): Deze lus doorloopt elke client in de verzameling verbonden clients.if (client !== ws && client.readyState === WebSocket.OPEN): We controleren of de client niet de afzender is (om te voorkomen dat het bericht twee keer naar de afzender wordt teruggestuurd) en of de verbinding nog open is.client.send(`Broadcast: ${msg}`);: Dit is het magische deel! Het bericht wordt naar die specifieke client gestuurd.
Het omroepen testen
Start je Node.js-server om dit te testen. Open vervolgens meerdere browsertabbladen of clienttoepassingen die allemaal verbinding maken met ws://localhost:8080.
Wanneer je vanaf één client een bericht verstuurt, moet je dit op alle andere verbonden clients zien verschijnen!
Gerichte berichten
Omroepen is krachtig, maar wat als je een bericht naar slechts één of enkele specifieke clients wilt sturen, in plaats van naar iedereen?
Dit heet gerichte berichtgeving. Voorbeelden zijn privéchatberichten, directe gebruikersmeldingen of statusupdates voor specifieke beheerders.
Specifieke clients identificeren
De bibliotheek ws geeft clients niet automatisch unieke ID's die je kunt gebruiken om berichten te richten. Je moet dit zelf implementeren:
- Wijs een client toe die verbinding maakt een unieke ID toe (bijvoorbeeld een UUID).
- Sla deze ID samen met het
ws-object op in eenMapof object op je server. - Wanneer een client een bericht verstuurt waarvoor een gericht antwoord nodig is, kan de client zijn ID meesturen.
Eenvoudig voorbeeld van gerichte berichtgeving
Voor een eenvoudig voorbeeld maken we een server die een bericht *alleen* terugstuurt naar de client die het heeft verzonden (een directe echo). Hiermee zie je hoe je naar één ws-object verzendt.
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8081 }); // Use a different port
wss.on('connection', ws => {
console.log('Client connected for targeted example');
ws.on('message', message => {
const msg = message.toString();
console.log(`Received: ${msg}`);
// Send the message back ONLY to the client that sent it
if (ws.readyState === WebSocket.OPEN) {
ws.send(`You said: ${msg}`);
}
});
ws.on('close', () => {
console.log('Client disconnected from targeted example');
});
ws.send('Welcome! I will only talk directly to you.');
});
console.log('Targeted WebSocket server started on port 8081');Controle van omroepen
Je bouwt een livechattoepassing. Wanneer een gebruiker een bericht verstuurt, wil je dat *alle* andere gebruikers in dezelfde chatruimte dat bericht zien.
Samenvatting en volgende stappen
Fantastisch gedaan! Je beheerst nu het versturen van berichten vanaf je Node.js-WebSocket-server:
- Omroepen: Een bericht naar alle verbonden clients sturen door
wss.clientste doorlopen. - Gerichte berichtgeving: Een bericht naar een specifieke client sturen met het afzonderlijke
ws-object.
Deze technieken zijn essentieel voor het bouwen van dynamische en interactieve realtime-toepassingen. Vervolgens bekijken we hoe clients verbinding maken met deze berichten aan de serverzijde en ermee communiceren!
Leer Programmeren van WebSockets en realtime-systemen met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 47
Veelgestelde vragen
Is de les “Berichten naar clients uitzenden” gratis?
Ja — de volledige tekst van “Berichten naar clients uitzenden” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Programmeren van WebSockets en realtime-systemen wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Programmeren van WebSockets en realtime-systemen bevat in totaal 4 lessen.
Wat leer ik in “Berichten naar clients uitzenden”?
Leer hoe u berichten vanaf de server naar alle verbonden clients of naar specifieke clients verstuurt. Je oefent met Programmeren van WebSockets en realtime-systemen door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Programmeren van WebSockets en realtime-systemen te beginnen?
Ervaring vooraf is niet nodig. Programmeren van WebSockets en realtime-systemen op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Berichten naar clients uitzenden”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Programmeren van WebSockets en realtime-systemen?
Ja. Elke les over Programmeren van WebSockets en realtime-systemen bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Een Node.js-project instellen
- Server-side-logica implementeren
- Berichten naar clients uitzenden
- Rooms en channels beheren