Я пытаюсь использовать события, отправленные сервером, чтобы моя веб-страница могла периодически обновлять время с моего сервера. Проблема в том, что мой клиент может взаимодействовать с моим сервером, однако ответ с моего сервера не доходит до моего клиента? По сути, когда я открываю свой html-файл с помощью firefox, я знаю, что мой сервер получает запрос, а затем начинает отправлять ответы, но на моей веб-странице ничего не отображается... Не совсем уверен, в чем проблема. Помощь приветствуется!
Вот мой клиентский код:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<script>
function init(){
if(typeof(EventSource)!=="undefined"){
var source = new EventSource('localhost');
source.onmessage = function(e) {
document.body.innerHTML += e.data + '<br>';
};
}
else{
document.body.innerHTML = "Sorry, your browser does not support server-sent events...";
}
}
</script>
<body onload="init()">
</body>
</html>
Вот код моего сервера (node.js):
var http = require('http');
var sys = require('sys');
var fs = require('fs');
http.createServer(function(req, res) {
if (req.headers.accept && req.headers.accept == 'text/event-stream') {
sendSSE(req, res);
}).listen(80, "127.0.0.1");
function sendSSE(req, res) {
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive'
});
var id = (new Date()).toLocaleTimeString();
// Sends a SSE every 5 seconds on a single connection.
setInterval(function() {
constructSSE(res, id, (new Date()).toLocaleTimeString());
}, 5000);
}
function constructSSE(res, id, data) {
res.write('id: ' + id + '\n');
res.write("data: " + data + '\n\n');
}