Comment implémenter les server-sent event en Node.js?
Pour implémenter les SSE (server-sent event) en Node.js, la meilleure option est d'utiliser Express.js pour créer le server web. Ensuite, une route servira à la transmission des événements (event stream) :
// Create event (stream header)
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
})
Chaque fois que le server doit envoyer un événement, il suffit d'utiliser res.write('data: mettre la donnée à envoyer ici');
.
Le code suivant est un exemple complet et fonctionnel écrit en Node.js. Le server envoie l'heure courante ou client toutes les 2 secondes.
Server (index.js
)
// Express web server framwork
const express = require('express')
const app = express()
// Static files are in the public folder
app.use(express.static('public'))
// Requests on path /see are processed here
app.get('/sse', function(req, res) {
// Create event(stream header)
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
})
// Every 2 seconds, send an event with current time
setInterval(function (res) {
let date = new Date();
res.write('data: The server time is:' + date.toGMTString() + '\n\n');
}, 2000, res)
})
// Start the server and listen on port 3000
app.listen(3000, () => { console.log ('Server is running on port 3000'); })
Client (/public/index.html
)
<h1>SSE demo with PHP</h1>
<ol id="list">
</ol>
<script>
// Create new event, the server script is sse.php
var eventSource = new EventSource("/sse");
// Event when receiving a message from the server
eventSource.onmessage = function(event) {
// Append the message to the ordered list
document.getElementById("list").innerHTML += '<li>'+event.data + "</li>";
};
</script>
Tester l'exemple en ligne avec repl.it.
Pour implémenter les SSE (server-sent event) en Node.js, la meilleure option est d'utiliser Express.js pour créer le server web. Ensuite, une route servira à la transmission des événements (event stream) :
// Create event (stream header)
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
})
Chaque fois que le server doit envoyer un événement, il suffit d'utiliser res.write('data: mettre la donnée à envoyer ici');
.
Le code suivant est un exemple complet et fonctionnel écrit en Node.js. Le server envoie l'heure courante ou client toutes les 2 secondes.
Server (index.js
)
// Express web server framwork
const express = require('express')
const app = express()
// Static files are in the public folder
app.use(express.static('public'))
// Requests on path /see are processed here
app.get('/sse', function(req, res) {
// Create event(stream header)
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
})
// Every 2 seconds, send an event with current time
setInterval(function (res) {
let date = new Date();
res.write('data: The server time is:' + date.toGMTString() + '\n\n');
}, 2000, res)
})
// Start the server and listen on port 3000
app.listen(3000, () => { console.log ('Server is running on port 3000'); })
Client (/public/index.html
)
<h1>SSE demo with PHP</h1>
<ol id="list">
</ol>
<script>
// Create new event, the server script is sse.php
var eventSource = new EventSource("/sse");
// Event when receiving a message from the server
eventSource.onmessage = function(event) {
// Append the message to the ordered list
document.getElementById("list").innerHTML += '<li>'+event.data + "</li>";
};
</script>
Tester l'exemple en ligne avec repl.it.
Pour implémenter les SSE (server-sent event) en Node.js, la meilleure option est d'utiliser Express.js pour créer le server web. Ensuite, une route servira à la transmission des événements (event stream) :
// Create event (stream header)
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
})
Chaque fois que le server doit envoyer un événement, il suffit d'utiliser res.write('data: mettre la donnée à envoyer ici');
.
Le code suivant est un exemple complet et fonctionnel écrit en Node.js. Le server envoie l'heure courante ou client toutes les 2 secondes.
Server (index.js
)
// Express web server framwork
const express = require('express')
const app = express()
// Static files are in the public folder
app.use(express.static('public'))
// Requests on path /see are processed here
app.get('/sse', function(req, res) {
// Create event(stream header)
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
})
// Every 2 seconds, send an event with current time
setInterval(function (res) {
let date = new Date();
res.write('data: The server time is:' + date.toGMTString() + '\n\n');
}, 2000, res)
})
// Start the server and listen on port 3000
app.listen(3000, () => { console.log ('Server is running on port 3000'); })
Client (/public/index.html
)
<h1>SSE demo with PHP</h1>
<ol id="list">
</ol>
<script>
// Create new event, the server script is sse.php
var eventSource = new EventSource("/sse");
// Event when receiving a message from the server
eventSource.onmessage = function(event) {
// Append the message to the ordered list
document.getElementById("list").innerHTML += '<li>'+event.data + "</li>";
};
</script>
Tester l'exemple en ligne avec repl.it.
Notons que selon la configuration de PHP, le serveur peut bufferiser les données avant de les transmettre au client. Il faut veiller à ce que les paramètres output_buffering
et zlib.output_compression
soient désactivés dans le fichier php.ini:
output_buffering = Off
zlib.output_compression = Off
Pour implémenter les SSE (server-sent event) en Node.js, la meilleure option est d'utiliser Express.js pour créer le server web. Ensuite, une route servira à la transmission des événements (event stream) :
// Create event (stream header)
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
})
Chaque fois que le server doit envoyer un événement, il suffit d'utiliser res.write('data: mettre la donnée à envoyer ici');
.
Le code suivant est un exemple complet et fonctionnel écrit en Node.js. Le server envoie l'heure courante ou client toutes les 2 secondes.
Server (index.js
)
// Express web server framwork
const express = require('express')
const app = express()
// Static files are in the public folder
app.use(express.static('public'))
// Requests on path /see are processed here
app.get('/sse', function(req, res) {
// Create event(stream header)
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
})
// Every 2 seconds, send an event with current time
setInterval(function (res) {
let date = new Date();
res.write('data: The server time is:' + date.toGMTString() + '\n\n');
}, 2000, res)
})
// Start the server and listen on port 3000
app.listen(3000, () => { console.log ('Server is running on port 3000'); })
Client (/public/index.html
)
<h1>SSE demo with PHP</h1>
<ol id="list">
</ol>
<script>
// Create new event, the server script is sse.php
var eventSource = new EventSource("/sse");
// Event when receiving a message from the server
eventSource.onmessage = function(event) {
// Append the message to the ordered list
document.getElementById("list").innerHTML += '<li>'+event.data + "</li>";
};
</script>
Tester l'exemple en ligne avec repl.it.
Notons que selon la configuration de PHP, le serveur peut bufferiser les données avant de les transmettre au client. Il faut veiller à ce que les paramètres output_buffering
et zlib.output_compression
soient désactivés dans le fichier php.ini:
output_buffering = Off
zlib.output_compression = Off
Pour implémenter les SSE (server-sent event) en Node.js, la meilleure option est d'utiliser Express.js pour créer le server web. Ensuite, une route servira à la transmission des événements (event stream) :
// Create event (stream header)
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
})
Chaque fois que le server doit envoyer un événement, il suffit d'utiliser res.write('data: mettre la donnée à envoyer ici');
.
Le code suivant est un exemple complet et fonctionnel écrit en Node.js. Le server envoie l'heure courante ou client toutes les 2 secondes.
Server (index.js
)
// Express web server framwork
const express = require('express')
const app = express()
// Static files are in the public folder
app.use(express.static('public'))
// Requests on path /see are processed here
app.get('/sse', function(req, res) {
// Create event(stream header)
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
})
// Every 2 seconds, send an event with current time
setInterval(function (res) {
let date = new Date();
res.write('data: The server time is:' + date.toGMTString() + '\n\n');
}, 2000, res)
})
// Start the server and listen on port 3000
app.listen(3000, () => { console.log ('Server is running on port 3000'); })
Client (/public/index.html
)
<h1>SSE demo with PHP</h1>
<ol id="list">
</ol>
<script>
// Create new event, the server script is sse.php
var eventSource = new EventSource("/sse");
// Event when receiving a message from the server
eventSource.onmessage = function(event) {
// Append the message to the ordered list
document.getElementById("list").innerHTML += '<li>'+event.data + "</li>";
};
</script>
Tester l'exemple en ligne avec repl.it.
Pour implémenter les SSE (server-sent event) en Node.js, la meilleure option est d'utiliser Express.js pour créer le server web. Ensuite, une route servira à la transmission des événements (event stream) :
// Create event(stream header)
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
})
Chaque fois que le server doit envoyer un événement, il suffit d'utiliser res.write('data: mettre la donnée à envoyer ici');
.
Le code suivant est un exemple complet et fonctionnel écrit en Node.js. Le server envoie l'heure courante ou client toutes les 2 secondes.
Server (index.js
)
// Express web server framwork
const express = require('express')
const app = express()
// Static files are in the public folder
app.use(express.static('public'))
// Requests on path /see are processed here
app.get('/sse', function(req, res) {
// Create event(stream header)
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
})
// Every 2 seconds, send an event with current time
setInterval(function (res) {
let date = new Date();
res.write('data: The server time is:' + date.toGMTString() + '\n\n');
}, 2000, res)
})
// Start the server and listen on port 3000
app.listen(3000, () => { console.log ('Server is running on port 3000'); })
Client (/public/index.html
)
<h1>SSE demo with PHP</h1>
<ol id="list">
</ol>
<script>
// Create new event, the server script is sse.php
var eventSource = new EventSource("/sse");
// Event when receiving a message from the server
eventSource.onmessage = function(event) {
// Append the message to the ordered list
document.getElementById("list").innerHTML += '<li>'+event.data + "</li>";
};
</script>
Tester l'exemple en ligne avec repl.it.
# | ID | Query | URL | Count |
---|