Socket.IO gebruiken met React
Maak vanuit React verbinding met een Socket.IO-server, luister naar events en verstuur berichten vanuit hooks.
Socket.IO gebruiken met React is een gratis React Academy-les op CoddyKit. Dit is les 2 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 React Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus React Academy bevat in totaal 4 lessen.
Waarom Socket.IO
Socket.IO voegt ruimtes, naamruimten, automatische herverbinding en gebeurtenisgebaseerde berichtenuitwisseling toe aan WebSockets, met een terugval naar langpolling via HTTP — veel gebruiksvriendelijker dan een onbewerkte WebSocket.
De client installeren
Installeer het Socket.IO-clientpakket.
npm install socket.io-clientEen socketinstantie maken
Roep io(url) buiten React-componenten aan, zodat de verbinding wordt gedeeld en niet bij elke weergave opnieuw wordt gemaakt. Exporteer deze als singleton.
// src/lib/socket.ts
import { io } from 'socket.io-client';
export const socket = io('https://api.example.com', {
autoConnect: false, // connect manually
withCredentials: true,
});Verbinden in useEffect
Maak verbinding wanneer de component wordt geladen en verbreek de verbinding wanneer deze verdwijnt, zodat er geen losgeraakte verbindingen achterblijven.
useEffect(() => {
socket.connect();
return () => {
socket.disconnect();
};
}, []);Naar gebeurtenissen luisteren
Gebruik socket.on('event', handler) om je te abonneren. Verwijder de luisteraar in de opruimfunctie om dubbele afhandelaars bij opnieuw renderen te voorkomen.
useEffect(() => {
function onMessage(data) {
setMessages(prev => [...prev, data]);
}
socket.on('message', onMessage);
return () => {
socket.off('message', onMessage);
};
}, []);Gebeurtenissen uitsturen
Roep socket.emit('event', data) aan om gegevens naar de server te sturen. Je kunt optioneel als laatste argument een callback (bevestiging) meegeven.
function sendMessage(text) {
socket.emit('message', { text, timestamp: Date.now() }, (ack) => {
console.log('Server acknowledged:', ack);
});
}Aangepaste useSocket-hook
Verpak de logica voor de socketverbinding in een aangepaste hook, zodat je deze in meerdere componenten kunt hergebruiken.
function useSocket(event, handler) {
useEffect(() => {
socket.on(event, handler);
return () => socket.off(event, handler);
}, [event, handler]);
}
// Usage:
useSocket('message', (data) => setMessages(m => [...m, data]));Ruimtes en naamruimten
Ga een ruimte binnen door een join-gebeurtenis uit te sturen (aan de serverkant afgehandeld). Gebruik naamruimten (io('/chat')) om socketverkeer op verbindingsniveau te segmenteren.
// Join a room
socket.emit('join-room', 'room-123');
// Connect to a namespace
const chatSocket = io('https://api.example.com/chat');Verbindingsstatus
Houd de verbindingsstatus bij met de gebeurtenissen connect, disconnect en connect_error.
const [isConnected, setIsConnected] = useState(socket.connected);
useEffect(() => {
socket.on('connect', () => setIsConnected(true));
socket.on('disconnect', () => setIsConnected(false));
return () => {
socket.off('connect');
socket.off('disconnect');
};
}, []);Vluchtige gebeurtenissen uitsturen
Gebruik socket.volatile.emit() voor berichten waarbij het acceptabel is dat af en toe pakketten verloren gaan (bijvoorbeeld cursorposities of de spelstatus).
// Position updates — OK to lose some
function onMouseMove(e) {
socket.volatile.emit('cursor', { x: e.clientX, y: e.clientY });
}Socket.IO versus onbewerkte WebSocket
Socket.IO voegt ruimtebeheer, naamruimten, automatische herverbinding en ondersteuning voor binaire gegevens toe aan WebSocket. Gebruik onbewerkte WebSocket als je minimale overhead nodig hebt of als de server Socket.IO niet ondersteunt.
Korte controle
Waarom moet je Socket.IO-gebeurtenislisteners verwijderen tijdens het opruimen van useEffect?
Samenvatting
Maak een singleton-socket-instantie met io(url, { autoConnect: false }). Verbind en verbreek de verbinding in useEffect, verwijder listeners altijd tijdens het opruimen en stuur gebeurtenissen uit met socket.emit(). Verpak de logica in een aangepaste hook voor hergebruik.
Leer React 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
- 88
- Lessen
- 324
Veelgestelde vragen
Is de les “Socket.IO gebruiken met React” gratis?
Ja — de volledige tekst van “Socket.IO gebruiken met React” 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 React Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus React Academy bevat in totaal 4 lessen.
Wat leer ik in “Socket.IO gebruiken met React”?
Maak vanuit React verbinding met een Socket.IO-server, luister naar events en verstuur berichten vanuit hooks. Je oefent met React Academy 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 React Academy te beginnen?
Ervaring vooraf is niet nodig. React Academy 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 2 van 4.
Hoe lang duurt de les “Socket.IO gebruiken met React”?
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 React Academy?
Ja. Elke les over React Academy 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
- WebSocket-beginselen in de browser
- Socket.IO gebruiken met React
- Een realtime chatcomponent bouwen
- Opnieuw verbinden, foutafhandeling en opruimen