WebSockets pour les échanges bidirectionnels
Mettez en œuvre et comprenez WebSockets, un protocole de communication en duplex intégral idéal pour échanger des données en temps réel dans les deux sens entre le client et le serveur.
WebSockets pour les échanges bidirectionnels est une leçon Real-Time Streaming Systems (WebRTC + Live Data) gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Real-Time Streaming Systems (WebRTC + Live Data), et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Real-Time Streaming Systems (WebRTC + Live Data) comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
What are WebSockets?
Imagine a phone call where both people can talk and listen at the same time, without hanging up and redialing for each sentence. That's similar to a WebSocket connection!
WebSockets provide a full-duplex communication channel over a single, long-lived connection. This means data can flow in both directions simultaneously, making real-time interactions smooth and efficient.
Beyond HTTP: Bidirectional Flow
Traditional HTTP communication works like sending a letter and waiting for a reply. Each request is separate.
- HTTP: Client sends a request, server sends a response. Connection usually closes.
- WebSockets: Once connected, client and server can send messages to each other at any time, without needing a new request/response cycle. The connection stays open.
This persistent, bidirectional nature is crucial for live updates.
Establishing a WebSocket
A WebSocket connection starts with a standard HTTP request, but it includes a special header to 'upgrade' the connection.
This process is called the WebSocket Handshake:
- Client sends an HTTP request with an 'Upgrade' header.
- Server responds with a '101 Switching Protocols' status.
- The connection then becomes a persistent WebSocket connection.
After the handshake, the underlying TCP connection is used for direct WebSocket message exchange.
Your Browser's WebSocket API
In web browsers, you interact with WebSockets using the built-in WebSocket API. It's a JavaScript object that handles the connection details for you.
You create a new WebSocket instance by providing the URL of your WebSocket server. This URL typically starts with ws:// for unencrypted or wss:// for encrypted connections (secure WebSockets).
Connecting to a Server
Let's see how to establish a basic WebSocket connection from your browser. We'll connect to a public echo server that simply sends back whatever it receives.
Try running this example. You should see 'Connected!' when the connection is established.
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Connect</title>
</head>
<body>
<h1>Connecting...</h1>
<script>
// Use wss:// for secure connections
const socket = new WebSocket('wss://echo.websocket.events');
socket.onopen = () => {
document.querySelector('h1').innerText = 'Connected!';
console.log('WebSocket connection opened');
};
socket.onerror = (error) => {
document.querySelector('h1').innerText = 'Error!';
console.error('WebSocket Error:', error);
};
</script>
</body>
</html>Sending Data to the Server
Once connected, you can send data to the WebSocket server using the send() method of your WebSocket object. You can send text, binary data, or even JSON strings.
In this example, type a message and click 'Send'. The echo server will receive it.
<!DOCTYPE html>
<html>
<head>
<title>Send WebSocket</title>
</head>
<body>
<input type="text" id="messageInput" placeholder="Type a message">
<button onclick="sendMessage()">Send</button>
<p id="status"></p>
<script>
const socket = new WebSocket('wss://echo.websocket.events');
socket.onopen = () => {
document.getElementById('status').innerText = 'Connected. Send a message!';
};
function sendMessage() {
const input = document.getElementById('messageInput');
const message = input.value;
if (socket.readyState === WebSocket.OPEN) {
socket.send(message);
document.getElementById('status').innerText = 'Sent: ' + message;
input.value = ''; // Clear input after sending
} else {
document.getElementById('status').innerText = 'Not connected yet!';
}
}
</script>
</body>
</html>Receiving Server Updates
To receive messages from the server, you listen for the message event using socket.onmessage. The event object contains the received data.
Run this code. It sends a message on open, and then displays the echo server's response.
<!DOCTYPE html>
<html>
<head>
<title>Receive WebSocket</title>
</head>
<body>
<h1>Echo Messages</h1>
<ul id="messages"></ul>
<script>
const socket = new WebSocket('wss://echo.websocket.events');
socket.onopen = () => {
console.log('WebSocket connection opened.');
// Send a message to get a response from the echo server
socket.send('Hello Echo Server!');
};
socket.onmessage = (event) => {
const messageList = document.getElementById('messages');
const newItem = document.createElement('li');
newItem.textContent = 'Received: ' + event.data;
messageList.appendChild(newItem);
};
socket.onerror = (error) => {
console.error('WebSocket Error:', error);
};
</script>
</body>
</html>Closing WebSockets Gracefully
It's good practice to manage your WebSocket connections. You can close a connection using the socket.close() method.
Additionally, you can listen for other events:
socket.onclose: Fired when the connection is closed.socket.onerror: Fired if an error occurs during connection.
Properly handling these events helps build robust real-time applications.
Where WebSockets Shine
WebSockets are perfect for applications that need instant, continuous updates between clients and servers. Common use cases include:
- Real-time chat applications: Messages appear instantly for all participants.
- Live sports scores/stock tickers: Data updates without page refreshes.
- Multiplayer online games: Synchronizing game state and player actions.
- Collaborative editing: Seeing changes from others in real-time.
They provide a more efficient alternative to repeatedly polling a server.
WebSocket Knowledge Check
You've learned about WebSockets. Let's test your understanding!
WebSockets Summary
Great job! In this lesson, you explored WebSockets, a powerful technology for real-time communication.
- WebSockets provide full-duplex, bidirectional communication.
- They establish a persistent connection after an HTTP handshake.
- The browser's
WebSocketAPI allows you to connect, send, and receive messages. - WebSockets are ideal for applications needing instant, continuous updates.
Next, you'll delve into practical applications of data channels in WebRTC!
Questions Fréquemment Posées
La leçon « WebSockets pour les échanges bidirectionnels » est-elle gratuite ?
Oui — le texte complet de « WebSockets pour les échanges bidirectionnels » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Real-Time Streaming Systems (WebRTC + Live Data), passe à CoddyKit PRO. Le cours Real-Time Streaming Systems (WebRTC + Live Data) comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « WebSockets pour les échanges bidirectionnels » ?
Mettez en œuvre et comprenez WebSockets, un protocole de communication en duplex intégral idéal pour échanger des données en temps réel dans les deux sens entre le client et le serveur. Tu pratiques Real-Time Streaming Systems (WebRTC + Live Data) avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Real-Time Streaming Systems (WebRTC + Live Data) ?
Aucune expérience préalable n'est requise. Real-Time Streaming Systems (WebRTC + Live Data) sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « WebSockets pour les échanges bidirectionnels » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Real-Time Streaming Systems (WebRTC + Live Data) ?
Oui. Chaque leçon Real-Time Streaming Systems (WebRTC + Live Data) inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Données en direct et HTTP traditionnel
- WebSockets pour les échanges bidirectionnels
- Server-Sent Events (SSE) pour la diffusion unidirectionnelle
- Interrogation longue et évolution vers la diffusion en continu