Salle de discussion Node.js : mise en œuvre étape par étape
La salle de discussion est une application très utile en termes d'interaction en temps réel et d'expérience utilisateur. Dans la technologie de développement Web moderne, l'utilisation de Node.js peut rapidement créer une salle de discussion efficace en temps réel, et l'effet est très bon. Cet article expliquera la mise en œuvre du salon de discussion Node.js, explorera pourquoi il est si courant et comment le créer.
Nous avons besoin d'un langage de programmation que le serveur et le client peuvent utiliser, dans ce cas nous considérons Node.js. Node.js présente de nombreux avantages par rapport à d'autres langages backend comme PHP ou Java, le plus important étant qu'il est conçu pour être piloté par des événements. Cela permet de mieux gérer un grand nombre de connexions simultanées et permet un traitement rapide des données dans les applications en temps réel.
Prérequis
La première étape de la création d'un salon de discussion Node.js consiste à installer Node.js et npm (gestionnaire de packages Node.js). Ouvrez un terminal et entrez la commande suivante :
$ sudo apt-get update $ sudo apt-get install nodejs $ sudo apt-get install npm
Nous utiliserons npm pour installer les 3 modules suivants :
• socket.io : Facilite l'utilisation des web sockets.
• express : pour le développement d'applications web.
• nodemon : utilisé pour surveiller les applications et les redémarrer lorsque des changements se produisent.
Exécutez la commande suivante pour les installer :
$ sudo npm install socket.io express nodemon
Nous sommes maintenant prêts à commencer à créer la salle de discussion à l'aide de Node.js.
1. Créer un serveur Web
La première étape dans la salle de discussion Node.js consiste à créer un serveur Web pour écouter le port spécifié, nous pouvons faire ceci :
const app = require('express')(); const server = require('http').Server(app); const io = require('socket.io')(server); app.get('/', (req, res) => { res.sendFile(__dirname + '/index.html'); }); server.listen(3000, () => { console.log('listening on *:3000'); });
Le code utilise d'abord le express< Module /code> Créez un serveur HTTP, puis utilisez le module <code>socket.io
pour créer un serveur de socket Web, et enfin laissez le serveur écouter sur le port 3000 pour s'exécuter sur le navigateur. La méthode app.get() permet d'afficher le fichier index.html dans le navigateur. express
模块创建一个HTTP服务器,然后使用socket.io
模块创建Web套接字服务器,最后将服务器侦听端口3000以便在浏览器上运行。app.get()方法用于在浏览器中显示index.html文件。
2.在客户端上打开连接
浏览器连接到服务器上的Web套接字,经过两个步骤:
a.在HTML引用socket.io
在HTML文件中添加以下两行代码,以便能够引用socket.io-client
:
<script src="/socket.io/socket.io.js"></script> <script src="/main.js"></script>
b.在客户端上打开连接
打开一个WebSocket连接,以便客户端能够连接到服务器上的套接字。代码如下:
const socket = io();
我们将连接到Node.js服务器并返回未定型的WebSocket,这样我们就可以开始通过套接字发送和接收消息。
现在我们的服务器已经准备好接收终端之间的连接。接下来,我们将看看如何像特定房间的连接发送消息。
socket.on('join', (room) => { socket.join(room); }); socket.on('message', (msg, room) => { socket.to(room).emit('message', msg); });
代码中,我们在服务器上使用套接字的.join()
方法来加入指定房间。当客户端发送'join'消息时,服务器将执行此操作。然后,服务器使用.to()
socket.io-client
: socket.emit('message', 'Hello World', 'room1');
const users = {}; socket.on('new-connection', () => { users[socket.id] = { name: `User ${Math.floor(Math.random() * 1000)}` }; socket.broadcast.emit('user-connected', users[socket.id]); }); socket.on('chat-message', (msg) => { socket.broadcast.emit('chat-message', { message: msg, name: users[socket.id].name }); }); socket.on('disconnect', () => { socket.broadcast.emit('user-disconnected', users[socket.id]); delete users[socket.id]; });
Maintenant, notre serveur est prêt à recevoir des connexions entre terminaux. Ensuite, nous verrons comment envoyer des messages à une connexion de salle spécifique.
$ nodemon index.js
Dans le code, nous utilisons la méthode .join()
du socket sur le serveur pour rejoindre la salle spécifiée. Le serveur le fera lorsque le client enverra un message « rejoindre ». Le serveur utilise ensuite la méthode .to()
pour diffuser le message à tous les utilisateurs de la salle cible.
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!