Maison >interface Web >js tutoriel >Construire une application de chat en temps réel avec Next.js et WebSockets
Les applications Web modernes s'appuient de plus en plus sur la communication en temps réel pour des fonctionnalités telles que le support client, la collaboration en équipe et l'interaction sociale. Ce didacticiel montre la création d'une application de discussion en temps réel robuste et évolutive en utilisant la puissance de Next.js et WebSockets. Nous couvrirons la configuration de WebSocket, la gestion des messages et la création d'une interface utilisateur de chat réactive avec React.
Avant de plonger dans le code, clarifions le rôle des WebSockets. Contrairement aux requêtes HTTP traditionnelles, les WebSockets établissent des canaux de communication persistants et bidirectionnels sur une seule connexion TCP. Cette communication full-duplex est idéale pour l'échange de données en temps réel, ce qui la rend parfaite pour les applications de chat, les mises à jour en direct et les outils collaboratifs.
Pour suivre ce guide, vous aurez besoin de :
Créez un nouveau projet Next.js (si ce n'est pas déjà fait) :
<code class="language-bash">npx create-next-app real-time-chat cd real-time-chat</code>
Installez Socket.IO pour une utilisation côté client et côté serveur :
<code class="language-bash">npm install socket.io-client socket.io</code>
Nous exploiterons les routes API Next.js pour créer notre serveur WebSocket.
pages/api/chat.js
:<code class="language-bash">mkdir pages/api touch pages/api/chat.js</code>
chat.js
:<code class="language-javascript">// pages/api/chat.js import { Server } from 'socket.io'; export default function handler(req, res) { if (req.method === 'GET') { res.status(200).json({ message: 'Chat API' }); } else { res.status(405).send('Method Not Allowed'); } } export function configureSocket(server) { const io = new Server(server, { path: '/api/chat', cors: { origin: '*', methods: ['GET', 'POST'], }, }); io.on('connection', (socket) => { console.log('A user connected'); socket.on('send_message', (message) => { io.emit('receive_message', message); }); socket.on('disconnect', () => { console.log('A user disconnected'); }); }); }</code>
Ce code configure un serveur Socket.IO, gère CORS pour la communication d'origine croisée et écoute les événements send_message
, diffusant des messages à tous les clients connectés via receive_message
.
Ensuite, initialisez le serveur WebSocket dans next.config.js
:
<code class="language-javascript">// next.config.js module.exports = { webpack: (config, { isServer }) => { if (isServer) { const { configureSocket } = require('./pages/api/chat'); const http = require('http'); const server = http.createServer(config.server); configureSocket(server); return config; } return config; }, };</code>
Maintenant, créons le frontend à l'aide du client Socket.IO pour nous connecter au serveur.
pages/index.js
(ou créez un nouveau composant).<code class="language-javascript">// pages/index.js import { useState, useEffect, useRef } from 'react'; import io from 'socket.io-client'; export default function Home() { const [messages, setMessages] = useState([]); const [message, setMessage] = useState(''); const socketRef = useRef(null); useEffect(() => { socketRef.current = io({ path: '/api/chat' }); socketRef.current.on('receive_message', (message) => { setMessages((prevMessages) => [...prevMessages, message]); }); return () => { socketRef.current.disconnect(); }; }, []); const sendMessage = () => { if (message.trim()) { socketRef.current.emit('send_message', message); setMessage(''); } }; // ... (JSX for the chat UI - input field, send button, message display) ... }</code>
Ce code établit une connexion WebSocket, écoute les messages entrants et gère l'envoi des messages au serveur. Pensez à ajouter le JSX nécessaire pour créer l'interface de chat (champ de saisie, bouton d'envoi et zone d'affichage des messages).
Exécutez l'application en utilisant :
<code class="language-bash">npm run dev</code>
Accédez http://localhost:3000
dans votre navigateur. L'ouverture de plusieurs onglets du navigateur affichera les mises à jour des messages en temps réel dans tous les onglets.
Vous avez réussi à créer une application de chat en temps réel à l'aide de Next.js et WebSockets ! Socket.IO a simplifié le processus en fournissant des fonctions faciles à utiliser pour la gestion des connexions et la diffusion des messages. Cette base peut être étendue avec des fonctionnalités telles que l'authentification des utilisateurs, la messagerie privée et le stockage persistant des messages à l'aide d'une base de données. Cela démontre la puissance des WebSockets dans la création d'expériences utilisateur dynamiques et réactives.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!