Avec le développement rapide de la technologie Internet, de plus en plus d'applications doivent mettre en œuvre des mises à jour ou des fonctions de transmission de données en temps réel. Dans le protocole HTTP traditionnel, lorsque le client demande des données au serveur, le serveur se déconnecte après avoir terminé la réponse, rendant impossible la transmission continue des données et donc incapable de répondre aux exigences en temps réel. Afin de résoudre ce problème, deux technologies, WebSocket et connexion longue, ont vu le jour. Cet article présente principalement comment utiliser Node.js pour implémenter une véritable technologie de connexion longue.
1. Qu'est-ce que la technologie de connexion longue
Dans le protocole HTTP traditionnel, le client demande des données au serveur et le serveur se déconnectera après avoir terminé la réponse. Bien que cette méthode de connexion de courte durée économise les ressources du serveur, elle pose également certains problèmes. Par exemple, le client doit fréquemment demander des données au serveur, ce qui entraîne un gaspillage de bande passante réseau. Dans le même temps, dans les applications ayant des exigences élevées en temps réel, le client doit continuer à envoyer des requêtes, mais le serveur doit également le faire. continuez à traiter les requêtes, ce qui entraînera un gaspillage des ressources du serveur.
La technologie de connexion longue est une technologie qui maintient l'état de la connexion entre le client et le serveur et peut établir une communication en temps réel entre le client et le serveur. Dans la technologie de connexion longue, une fois que le client a demandé des données au serveur, le serveur ne renvoie pas les données immédiatement, mais maintient l'état de la connexion et attend les mises à jour des données sur le serveur avant de les renvoyer. Cette méthode peut réduire le nombre de requêtes fréquentes, réduire la consommation de bande passante du réseau et également réduire la charge sur le serveur.
2. Comment implémenter une connexion longue Node.js
socket.io est Node L'une des solutions les plus populaires pour implémenter des connexions longues dans .js. Socket.io est une bibliothèque de communication open source en temps réel qui peut établir une connexion continue entre le client et le serveur pour établir une communication bidirectionnelle. Il prend en charge plusieurs protocoles tels que WebSocket, HTML5 Server-Sent Events (SSE) et Long Polling, de sorte que socket.io peut fournir la méthode de communication en temps réel optimale sous différents navigateurs ou environnements d'exploitation.
Tout d'abord, vous devez installer le module socket.io dans l'environnement Node.js :
npm install socket.io
Dans le code du serveur, introduisez le module socket.io et écoutez pour les connexions client : # 🎜🎜#
const app = require('http').createServer(handler) const io = require('socket.io')(app) app.listen(3000) io.on('connection', (socket) => { console.log('a user connected') })
const socket = io.connect('http://localhost:3000')
io.emit('message', { content: 'Hello World!' })
socket.on('message', (data) => { console.log(data.content) })
Connection: keep-alive Keep-Alive: timeout=5, max=1000
pour ouvrir une longue connexion :
const http = require('http') const agent = new http.Agent({ keepAlive: true }) http.get({ hostname: 'localhost', port: 8080, path: '/', agent: agent }, (res) => { res.setEncoding('utf8') res.on('data', (chunk) => { console.log(chunk) }) })
Dans l'exemple ci-dessus, le client ouvre une longue connexion et envoie une requête HTTP GET . Lorsque le serveur dispose de mises à jour de données, les informations de mise à jour seront automatiquement envoyées. http.Agent
类的keepAlive
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!